文档分类
上机实验七 数组综合应用、指针练习一
【实验六参考答案见后】
目的和要求:
(1)掌握指向普通变量、字符串、一维数组的指针的基本要领; (2)熟练掌握数组的应用。
实验内容: 一、完善程序题
1.任意读入10个整数,输出其中所有偶数的和。(使用指针完成) #include main( )
{int a[10],s=0; int *p;
for(__________;p if(*p%2==0) s+=__________; printf(\} 2.任意读入一个含有若干空格的字符串,将其中的每一个空格改用字符*替代。 例如,读入:“We like C very much!” 则输出:“We*like*C*very*much!” #include main() {char s[80]; char *p; __________; gets(p); while(*p!='\\0') {if(*p==' ') *p='*'; __________; } puts(_______); } 3.以下程序的功能是:求得数组a中的最大数和最小数,再交换这两个元素的值后输出数组a,并将结果保留到my文件夹下的sz.txt中。 例如,读入a数组中的值为: 45 7 最后输出: 12 64 97 50 123 9 18 20 45 123 12 64 97 50 7 9 18 20 #include #define N 10 main( ) {FILE *fp; int a[N],i ,t; int *p=a,*max,*min; fp=fopen(\ for(i=0;i*max) max=_______; else if(*(p+i)<*min) min=_______; t=*max; *max=*min; *min=t; for(i=0;i {printf(\ \ ____________________________; } fclose(fp); } 4.如果一个数及该数的反序数都是素数,则称该数为可逆素数。例如17是素数,17的反序数71也是素数,因此17便是一个可逆素数。以下程序判断给定的8个素数是否为可逆素数,并输出其中所有的可逆素数。 【程序的运行结果为】 17是可逆素数 37是可逆素数 739是可逆素数 1949是可逆素数 #include main() {int ss[8]={17,19,23,37,67,103,739,1949},i; int fxs,flag,k,x; for(i=0;i<8;i++) {x=ss[i]; ______________; while(x!=0) {fxs=fxs*10+_______; x=_______; } ______________; for(k=2;k<=fxs-1;k++) if(______________) {flag=0; break; } if(flag) printf(\是可逆素数\\n\ } } 二、编程题 任意读入10个字符串,将它们降序排列后输出。 【实验六参考答案】 一、编程题: 1.任意读入一个十进制整数(包含0和负整数),将其转换成二进制序列后输出。 例如:读入-29,则输出 -11101 #include main() {int ys[20],i,j,x; scanf(\ printf(\的二进制序列是:\ if(x<0) {x=-x; putchar('-'); } i=0; do {ys[i]=x%2; x=x/2; i++; }while(x!=0); //思考为什么用do...while循环? for(j=i-1;j>=0;j--) printf(\ putchar('\\n'); } 2.任意读入10个字符串,将其中的最小串和最大串合并成一个串后输出。例如: 读入 I love you very much We like C Programming Language 则输出:Cyou #include #include #define N 10 main() {char a[N][20],max[20],min[40]; //注意:因为合并后的串放在min中,min数组的空间要足够大 int i; for(i=0;i strcpy(max,a[0]); strcpy(min,a[0]); for(i=1;i if(strcmp(a[i],max)>0) strcpy(max,a[i]); else if(strcmp(a[i],min)<0) strcpy(min,a[i]); strcat(min , max); puts(min); } 3.任意读入一个字符串,统计输出其中每一个数字字符出现的次数。例如: 读入 “Hi19970701”。则输出 0---2 1---2 7---2 9---2 #include #include main() {char a[20]; int i,n[10]={0}; //定义十个计数器并清0 gets(a); for(i=0;a[i]!='\\0';i++) if(isdigit(a[i])!=0) //isdigit函数的功能是判断某字符型变量是否为数字字符 n[a[i]-48]++; 123
if(*p%2==0) s+=__________; printf(\}
2.任意读入一个含有若干空格的字符串,将其中的每一个空格改用字符*替代。 例如,读入:“We like C very much!” 则输出:“We*like*C*very*much!” #include main()
{char s[80]; char *p;
__________; gets(p);
while(*p!='\\0') {if(*p==' ') *p='*'; __________; }
puts(_______); }
3.以下程序的功能是:求得数组a中的最大数和最小数,再交换这两个元素的值后输出数组a,并将结果保留到my文件夹下的sz.txt中。 例如,读入a数组中的值为:
45 7 最后输出:
12 64 97 50 123 9 18 20
45 123 12 64 97 50 7 9 18 20 #include #define N 10 main( ) {FILE *fp; int a[N],i ,t;
int *p=a,*max,*min;
fp=fopen(\ for(i=0;i*max) max=_______; else if(*(p+i)<*min) min=_______; t=*max; *max=*min; *min=t;
for(i=0;i {printf(\ \ ____________________________; } fclose(fp); } 4.如果一个数及该数的反序数都是素数,则称该数为可逆素数。例如17是素数,17的反序数71也是素数,因此17便是一个可逆素数。以下程序判断给定的8个素数是否为可逆素数,并输出其中所有的可逆素数。 【程序的运行结果为】 17是可逆素数 37是可逆素数 739是可逆素数 1949是可逆素数 #include main() {int ss[8]={17,19,23,37,67,103,739,1949},i; int fxs,flag,k,x; for(i=0;i<8;i++) {x=ss[i]; ______________; while(x!=0) {fxs=fxs*10+_______; x=_______; } ______________; for(k=2;k<=fxs-1;k++) if(______________) {flag=0; break; } if(flag) printf(\是可逆素数\\n\ } } 二、编程题 任意读入10个字符串,将它们降序排列后输出。 【实验六参考答案】 一、编程题: 1.任意读入一个十进制整数(包含0和负整数),将其转换成二进制序列后输出。 例如:读入-29,则输出 -11101 #include main() {int ys[20],i,j,x; scanf(\ printf(\的二进制序列是:\ if(x<0) {x=-x; putchar('-'); } i=0; do {ys[i]=x%2; x=x/2; i++; }while(x!=0); //思考为什么用do...while循环? for(j=i-1;j>=0;j--) printf(\ putchar('\\n'); } 2.任意读入10个字符串,将其中的最小串和最大串合并成一个串后输出。例如: 读入 I love you very much We like C Programming Language 则输出:Cyou #include #include #define N 10 main() {char a[N][20],max[20],min[40]; //注意:因为合并后的串放在min中,min数组的空间要足够大 int i; for(i=0;i strcpy(max,a[0]); strcpy(min,a[0]); for(i=1;i if(strcmp(a[i],max)>0) strcpy(max,a[i]); else if(strcmp(a[i],min)<0) strcpy(min,a[i]); strcat(min , max); puts(min); } 3.任意读入一个字符串,统计输出其中每一个数字字符出现的次数。例如: 读入 “Hi19970701”。则输出 0---2 1---2 7---2 9---2 #include #include main() {char a[20]; int i,n[10]={0}; //定义十个计数器并清0 gets(a); for(i=0;a[i]!='\\0';i++) if(isdigit(a[i])!=0) //isdigit函数的功能是判断某字符型变量是否为数字字符 n[a[i]-48]++; 123
{printf(\ \
____________________________; }
fclose(fp); }
4.如果一个数及该数的反序数都是素数,则称该数为可逆素数。例如17是素数,17的反序数71也是素数,因此17便是一个可逆素数。以下程序判断给定的8个素数是否为可逆素数,并输出其中所有的可逆素数。
【程序的运行结果为】 17是可逆素数 37是可逆素数 739是可逆素数 1949是可逆素数 #include main()
{int ss[8]={17,19,23,37,67,103,739,1949},i; int fxs,flag,k,x; for(i=0;i<8;i++) {x=ss[i];
______________; while(x!=0)
{fxs=fxs*10+_______; x=_______;
}
______________;
for(k=2;k<=fxs-1;k++) if(______________) {flag=0; break; } if(flag) printf(\是可逆素数\\n\ } }
二、编程题
任意读入10个字符串,将它们降序排列后输出。
【实验六参考答案】 一、编程题:
1.任意读入一个十进制整数(包含0和负整数),将其转换成二进制序列后输出。 例如:读入-29,则输出 -11101 #include main()
{int ys[20],i,j,x; scanf(\
printf(\的二进制序列是:\ if(x<0) {x=-x;
putchar('-'); } i=0; do
{ys[i]=x%2; x=x/2; i++;
}while(x!=0); //思考为什么用do...while循环? for(j=i-1;j>=0;j--) printf(\ putchar('\\n'); }
2.任意读入10个字符串,将其中的最小串和最大串合并成一个串后输出。例如: 读入 I love
you very much We like C
Programming Language 则输出:Cyou #include #include #define N 10 main()
{char a[N][20],max[20],min[40]; //注意:因为合并后的串放在min中,min数组的空间要足够大 int i;
for(i=0;i strcpy(max,a[0]); strcpy(min,a[0]); for(i=1;i if(strcmp(a[i],max)>0) strcpy(max,a[i]); else if(strcmp(a[i],min)<0) strcpy(min,a[i]); strcat(min , max); puts(min); } 3.任意读入一个字符串,统计输出其中每一个数字字符出现的次数。例如: 读入 “Hi19970701”。则输出 0---2 1---2 7---2 9---2 #include #include main() {char a[20]; int i,n[10]={0}; //定义十个计数器并清0 gets(a); for(i=0;a[i]!='\\0';i++) if(isdigit(a[i])!=0) //isdigit函数的功能是判断某字符型变量是否为数字字符 n[a[i]-48]++; 123
strcpy(max,a[0]); strcpy(min,a[0]); for(i=1;i if(strcmp(a[i],max)>0) strcpy(max,a[i]); else if(strcmp(a[i],min)<0) strcpy(min,a[i]); strcat(min , max); puts(min); } 3.任意读入一个字符串,统计输出其中每一个数字字符出现的次数。例如: 读入 “Hi19970701”。则输出 0---2 1---2 7---2 9---2 #include #include main() {char a[20]; int i,n[10]={0}; //定义十个计数器并清0 gets(a); for(i=0;a[i]!='\\0';i++) if(isdigit(a[i])!=0) //isdigit函数的功能是判断某字符型变量是否为数字字符 n[a[i]-48]++; 123
if(strcmp(a[i],max)>0) strcpy(max,a[i]);
else if(strcmp(a[i],min)<0) strcpy(min,a[i]);
strcat(min , max);
puts(min); }
3.任意读入一个字符串,统计输出其中每一个数字字符出现的次数。例如: 读入 “Hi19970701”。则输出 0---2 1---2 7---2 9---2
#include #include main()
{char a[20];
int i,n[10]={0}; //定义十个计数器并清0 gets(a);
for(i=0;a[i]!='\\0';i++)
if(isdigit(a[i])!=0) //isdigit函数的功能是判断某字符型变量是否为数字字符 n[a[i]-48]++;
相关推荐: