C语言第四次作业

更新时间:2023-10-09 15:15:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第四次作业:数组

1. 字符筛选

编写一个程序,先输入一个字符串str1(长度不超过20),再输入一个单独的字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。例如:

? 输入:字符串str1为:86-010-62785001 字符ch为:-

? 输出:字符串str2为:861062785001 程序代码:

#include #include void main() { int i,j=0,length; char str1[21],str2[21],ch; printf(\字符串str1为:\ gets(str1); printf(\字符ch为:\ scanf(\ length=strlen(str1); for(i=0;i<=length;i++) { if(str1[i]!=ch) { str2[j]=str1[i]; j++; } else continue; } puts(str2); }

2. 数据合并

编写一个程序,能够输入两个预先从小到大排列的整数型数组(假设数组长度最大为20,数组输入时遇到数字0结束);要求将这两个数组的数字能够合并成为一个新的从小到大顺序排列的整数型数据,并将新数组输出。例如:

? 输入:请输入第一个数组:1,2,3,12,16,20,25,40,0

请输入第二个数组:4,5,6,15,18,20,21,22,25,38,45,0 ? 输出:合并后的数组为:1,2,3,4,5,6,12,15,16,18,20,20,21,22,25,25,38,40,45

/*编写一个程序,能够输入两个预先从小到大排列的整数型数组(假设数组长度最大为20,数组输入时遇到数字0结束);

要求将这两个数组的数字能够合并成为一个新的从小到大顺序排列的整数型数据,并将新数组输出。 例如:

输入:请输入第一个数组:1,2,3,12,16,20,25,40,0

请输入第二个数组:4,5,6,15,18,20,21,22,25,38,45,0

输出:合并后的数组为:1,2,3,4,5,6,12,15,16,18,20,20,21,22,25,25,38,40,45*/

程序代码:

#include #include void main() {

int i,j,t,k,m,n,r;

int a[20],b[20],c[40];

printf(\请输入第一个数组:\

}

for (i=0;;i++) {

scanf(\ m=i-1;

if (a[i]==0) break; }

printf(\请输入第二个数组:\for (j=0;;j++) {

scanf(\ n=j-1;

if (b[j]==0) break; }

for (i=0;i<=m;k++,i++) c[k]=a[i];

for (j=0;j<=n;k++,j++) c[k]=b[j];

for (r=0;r<=m+n;r++) {

for (k=0;k<=m+n;k++) if (c[k]>c[k+1]) {

t=c[k];

c[k]=c[k+1]; c[k+1]=t; } }

for (k=0;k<=m+n;k++) printf(\

3. 数制转换

请使用数组编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来。例如,

? 输入:请输入二进制数字符串:111011101110111011101110 ? 输出:对应的十进制数:15658734 程序代码:

#include #include #include void main() { char str[32]; int i,j=0,k=0; long int t=0; printf(\请输入二进制字符串:\ gets(str); j=strlen(str); for(i=j-1;i>=0;i--) { t+=(str[i]-48)*pow(2,k); k++; } printf(\对应的十进制数:%d\\n\}

4. 对称数字

一辆汽车在开始出发前其里程表上的读数是一个对称数 95859,后匀速行驶两个小时后,发现里程表上是一个新的对称数。问该新的对称数是多少?汽车的速度是多少?

注:所谓对称数是指从左向右读与从右向左读完全一样的数字。

请在合理的范围内(提示,车速别太快也不能太慢,假设介于30~120公里/小时),编程解决上述问题。

程序代码:

#include #include void main() { int a[5]; int m=95859,i,s,v,t=2; for(v=30;v<=120;v++) { s=m+v*t; for(i=0;i<=4;i++) { a[i]=fmod((floor(s/(pow(10,i)))),10); } if(a[0]==a[4]&&a[1]==a[3]) printf(\新的对称数为:%d,速度为:%d\\n\ } }

5. 矩阵元素的运算

读入 1 个正整数 n(1≤n≤10), 再读入 n*n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。(副对角线为从矩阵的右上角至左下角的连线)

例:括号内是说明,可以不输入、不输出。 ? 输入: 4 (n=4)

2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1

? 输出:sum=35 程序代码:

#include void main() { int n,i,j,sum=0; int a[10][10]; printf(\请输入n的值:\ scanf(\ printf(\请输入n*n矩阵a:\\n\ for(i=0;i<=n-1;i++) { for(j=0;j<=n-1;j++) {

}

scanf(\ if(i+j!=n-1&&i!=n-1&&j!=n-1) sum+=a[i][j]; } }

printf(\

6. 加法口诀表

要求使用二维数组求解下列问题。(提示:将加数、被加数、和放入一个二维数组中, 再输出该数组)。输入 1 个正整数 n(1≤n≤10),输出一张 20 以内的加法口诀表. 要求,该口诀表中的加数与被加数都不大于n, 分别存放在该表格中的第一行和第一列. 样式例如下:括号内是说明

? 输入:6 (n=6) ? 输出:

+ 1 2 3 4 5 6 1 2 2 3 4 3 4 5 6 4 5 6 7 8 5 6 7 8 9 10 6 7 8 9 10 11 12

#include void main() { int a[11][11]; int i,j,n; printf(\请输入n的值:\ scanf(\ for(i=0;i<=n;i++) { for(j=0;j<=n;j++) { if(i==0&&j!=0) a[i][j]=j; if(i!=0&&j==0) a[i][j]=i; if(i!=0&&j!=0) a[i][j]=i+j; if(i==0&&j==0) a[i][j]=43; } } for(i=0;i<=n;i++) { for(j=0;j<=n;j++) { if((i!=0&&j==0)||(j!=0&&i==0)||(i!=0&&j!=0&&j<=i)) { printf(\ } if(i==0&&j==0) printf(\ } printf(\ } }

7. 字符与字母 (综合题)

用户通过键盘输入一行文档(假设最大长度不超过100个字符),直到按句号“.”键时,输入结束。请编程实现以下的功能:

(1) 字母的转换:在用户敲键盘的时候,输入的字符,如果它是大写字母,则

回显相应的小写字母;如果它是小写字母,则回显相应的大写字母;其他字符,原样回显输出。

(2) 字符的统计:分别统计出其中的英文字母、空格、数字和其他字符的个数。 例如:

? 输入:(输入时回显)a 19-YEAR-OLD SAYS HE’S READY TO MAKE A DIFFERENCE. (用户实际输入为:A 19-year-old says he’s ready to make a difference.) ? 输出: (用户按句号“.”后输出,按照规则19-year-old 以及 he’s 都被认为是

一个词)

英文字母个数:37 空格个数为:8 数字个数为:2 其他字符个数:4

(提示,可以使用 #include 中的 getch()函数 ,该函数在键盘输入时,不缓存,不回显) 程序代码:

#include

#include #include #include

void main() {

int letter=0,space=0,figure=0,other=0,i; char str[100];

printf(\请输入字符串:\\n\ for(i=0;i<=100;i++) { if((str[i]=getch())!='.') { if(isupper(str[i])) { printf(\ letter++; } else if(islower(str[i])) { printf(\ letter++; } else { printf(\ if (str[i]==' ') space++; else if (str[i]>='0'&&str[i]<='9') figure++; else other++; } i++; } else break; }

printf(\ other++;

printf(\字符%d个,\\n空格%d个,\\n数字%d个,\\n其它字符%d个\\n\}

本文来源:https://www.bwwdw.com/article/jr9f.html

Top