{char a[20],b[20]; int i,j; gets(a); gets(b);
for(i=0;a[i]!='\\0';i++);
for(j=0;b[j]!='\\0'&&j<5;j++)
a[i+j]=b[j]; a[i+j]='\\0'; puts(a); }
6. 定义两个N行N列的二维数组a、b,编写程序,将a数组最后一行放到b数组的第0列中,把a数组中的第0行放到b数组的最后一列中,b所指二维数组中其他元素的数据不变。
#include
{int i,j ,a[3][3]={1,2,3,4,5,6,7,8,9};
int b[3][3]={11,12,13,14,15,16,17,18,19}; printf(\变换前数组a,b:\\n\
for(i=0;i<3;i++){for(j=0;j<3;j++)printf(\ printf(\
}
printf(\
for(i=0;i<3;i++){for(j=0;j<3;j++)printf(\ printf(\
}
for(i=0;i<3;i++) {b[i][0]=a[2][i]; b[i][2]=a[0][i]; }
printf(\变换后数组a,b:\\n\
for(i=0;i<3;i++){for(j=0;j<3;j++)printf(\
printf(\}
printf(\
for(i=0;i<3;i++){for(j=0;j<3;j++)printf(\
printf(\}
}
7. 一个整型数组有10个元素,编写程序删除所有值为n的元素。要求①主函数完成n的输入,数组元素的输入以及进行删除后数组元素的输出。②子函数完成删除功能。(此题为选做)
#include
{int a[10],i,n,k=0,j;
printf(\请输入10个整数:\\n\for(i=0;i<10;i++) scanf(\
printf(\请输入1个要被删除的整数:\\n\scanf(\for(i=0;i<10;i++)
if(a[i]==n){for(j=i;j<9;j++)
a[j]=a[j+1];
i--;k++;continue;
}
printf(\删除后数组的输出:\\n\for(i=0;i<10-k;i++) printf(\ \printf(\}
8. 试编程实现如下功能:先定义一个4行5列的数组(矩阵),调用库函数rand()随机产生20-50之间的整数给数组元素赋值,再将矩阵中第二列与第四列的元素互换。要求先输出原数组,再输出交换后的数组。(rand函数的使用请参阅教材259页)(此题为选做)
#include
{int a[4][5],i,j,t;
srand( (unsigned)time(NULL)); printf(\变换前数组a:\\n\for(i=0;i<4;i++) {for(j=0;j<5;j++)
{a[i][j]= rand()0+21;printf(\printf(\}
printf(\变换后数组a:\\n\
for(i=0;i<4;i++){t=a[i][1];a[i][1]=a[i][3];a[i][3]=t;} for(i=0;i<4;i++) {for(j=0;j<5;j++)
printf(\printf(\} }
9. 已知一组整型数据已按从小到大排列好,现任意输入一个整数,请按原来排序的规律将它插入到数组中(例如:原来的一组整数为1,3,5,8,9,若输入的整数是7,则最终的结果为: 1,3,5,7,8,9)。(此题为选做)
#include
{int a[10]={1,3,5,7,9,11,13,15,17},i,j,n;
printf(\请输入1个整数:\scanf(\for(i=0;i<9;i++) if(a[i]>n)
{for(j=9;j>i;j--)a[j]=a[j-1]; a[i]=n; break; }
if(n>=a[8])a[9]=n; for(i=0;i<10;i++) printf(\ \printf(\}
10. 编写程序实现对字符串的加密,要求从键盘输入一个字符串,输出加密之后的字符串。
加密规则为:对于串中第奇数个字符,若是字母,则把该字母变为它后面的字母(若为Z则变为A),不是字母则不变;对于偶数个字符,若是字母,则把该字母变为它前面的字母(若为A则变为Z),不是字母则不变;大小写字母都遵循此规则。例如: 若原字符串是:AbbaZG Ha-MnnK Yzx 加密字符串为:BaczAF Gb-NmoJ Xaw (此题为选做)
#include
{char a[20]; int i;
printf(\请输入一个字符串:\gets(a);
for(i=0;a[i]!='\\0';i++)
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z') if(i%2==1)
switch(a[i])
{case 'a':a[i]='z'; break; case 'A':a[i]='Z'; break; default:a[i]=a[i]-1; }
else switch(a[i])
{case 'z':a[i]='a'; break; case 'Z':a[i]='A'; break; default:a[i]=a[i]+1; } puts(a); printf(\}
11. 编写程序:输入一个整数,输出该整数的平方螺旋矩阵。例如输入4,则输出:
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 (此题为选做)
#include
{int i,j,m,n=1,a[10][10];
printf(\请输入一个小于10的整数:\ scanf(\
for(i=0;i<=m/2;i++) /*共旋转m/2圈*/
{for(j=i;j for(j=i+1;j for(i=0;i {printf(\ for(j=0;j 实验十 1. 编写字符串拷贝程序,并要求将字符串中的小写字母转换成大写字母。 #include {char a[80],b[80]; int i,l; printf(\输入一个字符串:\gets(a); for(i=0;a[i]!=?\\0?;i++) {b[i]=a[i]; if(b[i]>=?a?&&b[i]<=?z?)b[i]=toupper(b[i]); } puts(b); } 2、输入一个以回车结束的字符串(少于80个字符),将该字符串逆序后输出。 #include main() {char c[80],ch; int i,l; gets(c); l=strlen(c); for(i=0;i c[i]=c[l-i-1]; c[l-i-1]=ch; } puts(c); } 3、输入一个以回车结束的字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数,然后再输出该字符串。 #include {char c[80],ch; int i,num=0; gets(c); ch=getchar(); for(i=0;c[i]!=‘\\0’;i++) if(c[i]==ch)num++; printf(“num(%c)=%d\\n”,ch,num); puts(c); } 4. 编写程序:输入一行英文字符串,统计单词的个数(单词和单词以空格分隔)。(此题为选做) #include {char c[50]; int j=0,k,n=0; printf(\输入一个字符串:\gets(c); while(c[j]==' ') j++; if(c[j]!='\\0') {n++;j++;} for(k=j;k<50;k++) {if(c[k]==' '&& c[k+1]!=' '&& c[k+1]!='\\0')n++; if(c[k]=='\\0') break; } printf(\}