【项目1 - 数组大折腾】
(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行。
int main( ){
int a[20]={...}; //初始化前10个元素
//键盘输入后10个元素的值
//由前往后输出数组中所有元素的值
printf("由前往后,数组中的值是:\n");
return 0;
}
[参考解答]
#include<stdio.h>int main( ){ int i; int a[20]= {13,45,89,32,54,21,90,723,65,45}; //初始化前10个元素 //键盘输入后10个元素的值 printf("请输入10个整数\n"); for(i=10; i<20; ++i) scanf("%d", &a[i]); //由前往后输出数组中所有元素的值 printf("由前往后,数组中的值是:\n"); for(i=0; i<20; ++i) { printf("%d\t", a[i]); if((i+1)%5==0) printf("\n"); } return 0;}
(2)创建一个长度为10的整型数组并初始化,由后往前(由第9个元素向第0个元素方向)输出数组中所有元素的值,改变数组元素的值,令所有的数据加倍,输出改变后的值。
[参考解答]
#include<stdio.h>int main( ){ int i; int a[10]= {13,45,89,32,54,21,90,723,65,45}; //初始化前10个元素 //由后往前输出数组中所有元素的值 printf("由后往前,数组中的值是:\n"); for(i=9; i>=0; --i) printf("%d\t", a[i]); printf("\n"); //将所有元素值加倍后保存在数组中 for(i=0; i<10; ++i) a[i]*=2; //或a[i]=a[i]*2; //输出改变后的值 printf("由前往后,数组中改变了的值是:\n"); for(i=0; i<10; ++i) printf("%d\t", a[i]); printf("\n"); return 0;}
(3)创建一个长度为16的整型数组a并初始化,先输出数组中元素值为3的倍数的数,再输出所有下标为3的倍数的元素值。输出如图示。
[参考解答]
#include<stdio.h>int main( ){ int i; int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187,}; //初始化 //输出数组中元素值为3的倍数的数 printf("数组中,元素值为3的倍数的数是:\n"); for(i=0; i<16; ++i) { if(a[i]%3==0) printf("a[%d] %d\n", i, a[i]); } //输出下标为3的倍数的元素值 printf("下标为3的倍数的元素值是:\n"); for(i=0; i<16; ++i) { if(i%3==0) printf("a[%d] %d\n", i, a[i]); } return 0;}
这个程序的局部改进还可以是:
printf("下标为3的倍数的元素值是:\n"); for(i=0; i<16; i+=3) printf("a[%d] %d\n", i, a[i]);
(4)创建一个长度为16的整型数组a并初始化,删除数组中所有能被3整除的元素(数组中实际有效使用的元素将不足16),输出删除后数组中的全部元素。
[参考解答]
#include<stdio.h>int main( ){ int i,j; int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187,23}; //初始化 //删除所有能被3整除的数 for(i=0,j=0; i<16; ++i) { if(a[i]%3) //等同于(a[i]%3!=0) a[j++]=a[i]; } //输出剩余的元素(共有j个) printf("删除所有能被3整除的数后,剩余的数是:\n"); for(i=0; i<j; ++i) { printf("%d ", a[i]); } printf("\n"); return 0;}
(5)创建一个长度为16的整型数组a并初始化前15个元素,输入一个整数b,将b插入到a[0]位置(原有的数据往后“移动”)。
[参考解答]
#include<stdio.h>int main( ){ int i,b; int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187}; //初始化 scanf("%d", &b); //给b空出位子来 for(i=15; i>0; --i) { a[i]=a[i-1]; } a[0] = b; //输出剩余的元素(共有j个) printf("插入后的数组是:\n"); for(i=0; i<16; ++i) { printf("%d ", a[i]); } printf("\n"); return 0;}