#include
int a[N][N]={{1,2,3},{4,5,6},{7,8,9}};
int i,j; /*变量i,j用于for循环*/
int sum=0; /*变量sum用于求和,初始化为0*/ for (i=0;i for(j=0;j if (i==j)sum+=a[i][j]; /*如果是对角线元素,sum+a[i][j]*/ printf(\ return 0; } 注1:在程序验证题①的基础上,修改程序,求出数组a中大于a[0]的元素之和。 注2:对上述程序②进行优化,消除内循环,实现同样的效果。在② 的基础上,修改程序,求出数组a中反对角线元素之和。提示:内循环用逆序;i+j==N-1。 (2)程序改错题 2.一般编程题 编程题1:从键盘输入10个整型数据,放入数组a 中,求其最大值、最小值及其所在元素的下标位置,并输出。 程序提示:定义10个元素的数组,用for循环语句逐一输入数据;定义最大值变量和最小值变量,用for循环语句遍历所有数组元素,逐一比较查找最大值和最小值。 编程题2:给定一个字符数组a,要求将数组的内容倒置。如: 执行前数组的内容为{'1','2','3','4','5','6','7','8'} 执行后数组的内容为{'8','7','6','5','4','3','2','1'} 提示:用i表示数组的第一个元素的下标;用j表示数组最后一个元素的下标。 交换a[i]和a[j],当i<=j时交换完毕。 交换一个元素后,i+1,j-1。 编程题3: 给定一个二维数组a,要求将数组的内容逆置。如: 执行前数组的内容为{{1,2,3},{4,5,6},{7,8,9}}, 执行后数组的内容为{{1,4,7},{2,5,8},{3,6,9}} 提示:用i表示数组的行下标;用j表示数组的列下标。以对角线元素为界,交换a[i][j]和a[j][i]。 编程题4: 一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。 Math C 5 张 80 7王 61 65 李 59 63 赵 85 87 周 76 77 English 92 71 70 90 85 提示:可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。 3.较难编程题 编程题1:给定一个整型数组a,要求将数组a中的元素进行从小到大的排序(用冒泡法排序) 【算法描述】 从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后;第二遍只需考虑(N-1)个数,即不用考虑最后一个数;以此类推每次少考虑一个数,直到第(N-1)遍比较后就可以完成排序。 编程题2:有15个整数(已排序)存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的下标值,如果该数不在数组中,则输出“无此数”。这15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。 提示:折半查找法:在一个已从小到大排序的数组a中,用b(begin)表示数组首元素的下标,用e(end)表示数组末元素的下标,需查找的数x首先和处于数组最中间的下标为m=(b+e)/2的元素比较,若x和该数组元素相等,则找到位置,返回m;否则,若x大,则x可能落在下半区中,令b=m+1,若x小,则x可能落在上半区中,令e=m-1。重新计算m,再比较x和a[m];重复上述操作直到找到相等元素或b>e。若找到相等元素,则返回元素下标,否则返回-1表示无此数。 7.4 实验七 字符与字符串处理 一、实验目的与要求 1. 2. 3. 4. 5. 6. 掌握C语言字符型数据的概念,理解字符型与整型数据之间的关系。 掌握字符的输入与输出。 掌握转义字符常量、字符串常量的使用。 掌握字符、字符串与字符数组的输入与输出。 掌握字符串函数的使用\\字符串数组的使用。 实验课时2学时 二、实验内容 1.程序改错题 ① 调试下列程序,使之具有如下功能:任意输入两个字符串(如:\和\, 并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。程序中的strlen是库函数,功能是求字符串的长度,它的原型保存在头文件\中。调试时注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。 #include char a[10],b[10],ch; int c,d,k; scanf(\ scanf(\ /* error */ printf(\c=strlen(a);d=strlen(b); if(c>d) { for(k=0;k ch=a[k];a[k]=b[k];b[k]=ch; } a[k]='\\0'; /* error */ } printf(\printf(\ } ② 下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新 的字符串,并取代原字符串。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include int i,j; for(i=0;j=0;s[j]!='\\0';i++) /* error */ if(s[i]>='0' && s[i]<='9') s[j++]=s[i]; s[j]=”\\0”; /* error */ } void main() { char item[80]; printf(\ gets(item); printf(\ fun(item); printf(\} 2.一般编程题 编程题1 请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。 例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include /*请填写完整*/ } void main() { char a[N]; printf ( \ a string : \ gets ( a ); printf ( \ puts( a ); fun( a ); printf(\ printf ( \ puts (a); } 编程题2 请编写输入以下图案(1)、(2)的程序,图案的行数由输入的值确定。 (1) (2) 3.较难编程题 编程题1 编写程序:程序功能是从键盘接收一个字符串,然后按照字符顺序从小到大进行排序, 例如,若输入edcba,则应输出abcde。 #include char string[100], c; printf(\ gets(string); /*请填写完整*/ printf(\} 编程题2 编写程序:程序功能是统计子串substr在母串str中出现的次数。要求编写并调用函数fun的功能是:从str所指字符串中,找出substr所指子串的个数作为函数值返回。例如,当str所指字符串中的内容为abcdabfab,substr所指字符串的内容为ab,则函数返回整数3。 #include count(char str[],char substr[]) { /*请填写完整*/ } void main() {char str[80],substr[80]; int n; gets(str); gets(substr); printf(\ }