程序设计基础(C)第七章数组习题
C语言第7章_数组
7.3练习与习题参考答案7.3.1练习参考答案练习7-1 将例7-3程序中的break语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:如果将break语句去掉,当在数组a中找到与x 值相同的元素并输出其下标后,继续查找并输出与x 值相同的元素。
即查找并输出与x 值相同的所有元素的下标。
当输入数据仍为2 9 8 1 9时,输出将是Index is 1Index is 4练习7-2 求最大值及其下标。
输入一个正整数 n (1<n≤10),再输入n个整数,输出最大值及其对应的最小下标,下标从0开始。
试编写相应程序。
解答:#include <stdio.h>int main(){int i, n, max, maxi;int a[10];scanf("%d", &n);for(i = 0; i < n; i++){scanf("%d", &a[i]);}max = a[0]; maxi = 0;for (i = 1; i < n; i++) {if (a[i] > max) {max = a[i]; maxi = i;}}printf("%d %d\n", max, maxi);return 0;}练习7-3 将数组中的数逆序存放。
输入一个正整数 n (1<n≤10),再输入 n 个整数,存入数组a中,先将数组a中的这n个数逆序存放,再按顺序输出数组a中的n个元素。
试编写相应程序。
解答1:#include <stdio.h>int main(){int i, high, low, n, temp;int num[10];scanf("%d", &n);for(i = 0; i < n; i++)scanf("%d", &num[i]);low = 0, high = n - 1;while(low <= high) {temp = num[high];num[high] = num[low];num[low] = temp;low++;high--;}for(i = 0; i < n; i++) {if(i == 0)printf("%d", num[i]);elseprintf(" %d", num[i]);}printf("\n");return 0;}解答2:#include <stdio.h>int main(){int i, n, temp;int num[10];scanf("%d", &n);for(i = 0; i < n; i++)scanf("%d", &num[i]);for(i = 0; i < n/2; i++){temp = num[i];num[i] = num[n-1-i];num[n-1-i] = temp;}for(i = 0; i < n; i++) {if(i == 0)printf("%d", num[i]);elseprintf(" %d", num[i]);}printf("\n");return 0;}练习7-4 找出不是两个数组共有的元素。
c语言复习题及答案第七章数组
第七章数组(8学时)学习目的与要求:1、要点掌握一维数组的定义和引用;2、基本掌握二维数组的定义和引用;3、要点掌握字符型数组的定义与引用;4、能正确使用字符串办理函数;5、学会使用数组解决实质问题。
要点:1、一维数组的定义与引用;2、二维数组的定义与引用;3、字符数组的定义与引用;第 1 讲知识归纳:1、一维数组的定义:种类说明符数组名[常量表达式];(1) (1)数组名后一定用方括弧[ ],用其余括弧均错误;(2)方括弧中的常量表达式表示数组的元素个数;(3)方括弧中的常量表达式,一定是能计算出详尽数值,且不改变的常量,不可以是变量;2、一维数组的引用:数组名[下标]for ( i =0 ; i<7 ; i ++ ) printf(“%c” , c1[ i ] );(2) 将整个字符串一次输入输出,用格式符%s ;如:char c1[10];scanf (“ %s”, c1) ;100];D) int N=100;int num[N];(2003 年 9 月)25、有以下程序main(){ char a[ ]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘0’}; int i,j;i=sizeof(a); j=strlen(a);printf( “%d,%d b”i,j);}程序运转后的输出结果是( )。
A) 9,9B) 8,9C) 1,8D) 9, 8(2002 年 9 月)21、 C 22、C 23、D 24、B 25 、D二、填空题1、下边 fun 函数的功能是将形参x 的值变换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0 的元素中,其余依此类推。
请填空。
fun(int x,int b[]){ int k=0,r;do{ r=x% 2;b[k++]=r;x/= 2 ; } while(x); }(1996 年 4 月)2 22、以下程序用来对从键盘上输入的两个字符串进行比较 , 而后输出两个字符串中第一个不同样字符的 ASCII 码之差。
C程序设计(第2版)第七章习题解答.doc
C程序设计(第2版)第七章习题解答第七章动态内存分配习题一、基本概念与基础知识自测题7.1 填空题7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。
答案:(1)代码区,存放程序代码;(2)全局变量与静态变量区,存放全局变量或对象(包括静态);(3)局部变量区即栈(stack)区,存放局部变量;(4)自由存储区(free store),即动态存储区或堆(heap)区。
7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动态建立对象的初始化是通过(3)实现(4)。
答案:(1)命名对象(2)无名对象(3)初始化式(initializer)(4)显式初始化7.1.3 在用new运算符建立一个三维数组15*30*10时,使用了(1)个下标运算符,对应的用delete运算符注销这个三维数组时使用了(2)个下标运算符。
new返回的指针是指向(3)的指针。
答案:(1)3个(2)1个(3)30行10列的2位数组7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。
如果new返回的指针丢失,则所分配的自由存储区空间无法收回,称为(2)。
这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。
答案:(1)返回一个空指针(NULL)(2)内存泄漏(3)重新启动计算机后(4)并不依赖于建立它的作用域7.1.5 按语义的默认复制构造函数和默认复制赋值操作符实现的复制称为(1),假设类对象obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。
答案:(1)浅拷贝(2)同一个堆对象7.1.6 单链表的结点包含两个域:(1)和(2)。
使用链表的最大的优点是(3),即使是动态数组也做不到这一点。
答案:(1)数据域(2)指针域(3)用多少空间,开多少空间7.1.7 进入单链表必须通过单链表的(1),如果它丢失则(2),内存也(3),在单链表中进行的查找只能是(4)。
C程序设计(数组)习题与答案
C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。
掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。
1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。
c程序设计(谭浩强)第七章习题答案
int i;
float ave=0;
for(i=0;i<10;i++)
ave=ave+a[i][n]/10;
return ave;
}
void max(float a[][5]) //最高分的学生和课程
{
int i,j,row,colum;
float max=a[0][0];
for(i=0;i<10;i++)
# include <stdio.h>
# include<math.h>
# include<string.h>
/*int yue(int a,int b) //求最大公约数
{
int i,min;
min=a>b?b:a;
for(i=min;i>0;i--)
{
if(a%i==0&&b%i==0)
{
return i;
if((mid%2)!=1) //因职工号序号为奇数,故强制把序号转为奇数
mid-=1;
if(strcmp(b,a[mid])>0) //不能写b>a[mid]
{min=mid+2;}
else if(strcmp(b,a[mid])<0) //不能写b<a[mid]
{max=mid-2;}
else
{printf("职工姓名为:%s\n",a[mid-1]);break;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%-2d",b[i][j]);
程序设计基础(人民邮电出版社)答案第7章 数组
一、选择题1. 对一维数组a的正确说明是 D 。
A) int a(10); B) int n=10,a[n]; C) int n; D) #define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];2. 能对二维数组a进行正确初始化的语句是B。
A) int a[2][]={{1,0,1},{5,3,2}}; B) int a[][3]={{1,2,3},{4,5,6}};C) int a[2][4]={{1,2,3},{4,5},{6}}; D)int a[][3]={{1,0,1},{1,2,3,4},{1,1}};3. 对两个数组a和b进行如下初始化char a[]="ABCDEF";char b[]={'A','B','C','D','E','F'};则以下叙述正确的是D。
A) a与b数组完全相同B) a与b长度相同C) a和b中都存放字符串D) a数组比b数组长度长4. 以下数组定义中不正确的是 D 。
A) int a[2][3]; B) int b[][3]={0,1,2,3,4,5};C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};5. 以下选项中,不能正确赋值的是 A 。
A) char s1[10];s1="Ctest"; B) char s2[]={'C', 't', 'e', 's', 't'};C) char s3[20]="Ctest"; D) char s4[]="Ctest\n"二、阅读程序写出结果1.#include<stdio.h>void main(){ char ch[7]={"12ab56"};int i,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}答案:12.#include<stdio.h>void main(){ int a[10]={1,2,2,3,4,3,4,5,1,5};int n=0,i,j,c,k;for(i=0;i<10-n;i++){ c=a[i];for(j=i+1;j<10-n;j++)if(a[j]==c){ n++;for(k=j;k<10-n;k++)a[k]=a[k+1];}}for(i=0;i<(10-n);i++)printf("%d",a[i]);}答案:123453.#include <stdio.h>void main(){ int i;char a[]="Time",b[]="Tom";for(i=0;a[i]!='\0'&&b[i]!='\0';i++)if(a[i]==b[i])if(a[i]>='a'&&a[i]<='z')printf("%c",a[i]-32);elseprintf("%c",a[i]+32);else printf("*");}答案:t*M4.#include<stdio.h>#define LEN 4void main(){ int j,c;static char n[2][LEN+1]={"8980","9198"}; for(j=LEN-1;j>=0;j--){c=n[0][j]+n[1][j]-2*'0';n[0][j]=c%10+'0';}for(j=0;j<=1;j++) puts(n[j]);}答案:7078 9198三、程序填空1.程序的功能是在a数组中查找与x值相同的元素的所在位置。
C语言 第七章 数组期末测试习题与答案
C语言第七章数组期末测试习题与答案1、以下对一维整型数组a的正确说明是 ( )。
A.#define SIZE 10int a[SIZE];B.int a(10);C.int n=10,a[n];D.int n; scanf(“%d”,&n); int a[n];参考答案:A2、以下能对一维数组a进行正确初始化的语句是 ( )。
A.int a[10]={ };B.int a[10]={10*1};C.int a[10]=(0,0,0,0,0);D.int a[ ]={0};参考答案:B3、不是给数组的第一个元素赋值的语句是 ( )。
A.a[1]=1;B.int a[2]={1,0};C.int a[2];scanf (“%d”,&a[0]);D.int a[2]={1};参考答案:A4、下面程序的运行结果是 ( )。
main(){int a[6],i;for(i=1;i<6;i++){ a[i]=6*(i-2+4*(i>3))%5;printf("%2d",a[i]);}}A.-1 0 4 0 3B.-1 0 1 4 3C.-1 0 1 4 2D.-1 0 1 1 2参考答案:D5、下列定义正确的是 ( )。
A.int b[3]={2,5}B.int 4e[4]C. static int a[2]={1,2,3,4,5}D.int a(10)参考答案:A6、设有char str[10],下列语句正确的是 ( )。
A.printf("%s",str);B.scanf("%s",&str);C.printf("%c",str);D.printf("%s",str[0]);参考答案:B7、下列说法正确的是 ( )。
A.在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数B.在C语言中,数组元素的数据类型可以不一致C.在C语言中,数组元素的个数可以不确定,允许随机变动D.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组参考答案:D8、假设array是一个有10个元素的整型数组,则下列写法中正确的是A.array[-1]=0;B.array[0]='a';C.array[10]=0;D.array[0]=0;参考答案:D9、有一数组如下定义:int a[6]={1,2,3,4,5};执行for (i=0; i<6;i++) printf ("%d ",a[i]);后输出的结果是_____( )。
C程序设计(数组)习题与答案
一、单选题1、若有定义 char s[10];则在下面表达式中不表示s[1]的地址的是()。
A.s++B.&s[0]+1C.&s[1]D.s+1正确答案:A2、若有定义int a[5],*p=a;则对a数组元素的正确引用是()。
A.a+2B.*(a+2)C.*&a[5]D.*(p+5)正确答案:B3、若有定义int a[5],*p=a;则对a数组元素地址的正确引用是()。
A.p+5B.&a+1C.*a+1D.&a[0]正确答案:D4、若要对a进行合法的自减运算,则之前应有下面()的说明。
A.int b[10];int *a=b+1;B.int k;int *a=&k;C.int p[3];int *a=p;D.char *a[3];正确答案:A5、若有定义int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是()。
A.p1=x+3,*p1++B.x[3]C.p1=x+2,*++p1D.p1=x+2,*(p1++)正确答案:D6、设int x[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0},*p=x,k;且0≤k<10, 则对数组元素x[k]的错误引用是()。
A.x[p-x+k]B.p+kC.*(&x[k])D.*(x+k)正确答案:B7、设double *p[6];则()。
A.p是指针数组,其元素是指向double型变量的指针B.p是指向double型变量的指针C.p是double型数组D.p是数组指针,指向double型数组正确答案:A8、若有定义int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。
A.for(i=0;i<6;i++) printf("%2d",*p++);B.for(i=0;i<6;i++) printf("%2d",*(p+i));C.for(i=0;i<6;i++) printf("%2d",*(p++));D.for(i=0;i<6;i++) printf("%2d",(*p)++);正确答案:D9、下面程序执行后的输出结果是()。
《C程序设计》第7章练习题
《C程序设计》第7章练习题4. 有下列程序main(){ int array[][3]={1,2,3,4,5,6,7,8,9};int k,m,n=0;for(k=0;k<3;k++)for(m=k+1;m<3;m++){ n=array[k][m];array[k][m]=array[m][k];array[m][k]=n;}for(m=0;m<3;m++)printf("%d",array[m][0]);}(1) 此程序的功能是对数组array表示的3阶方阵进行(30 )。
30 (A) 转置(B) 第2行调至第1行、第3行调至第2行、第1行调至第3行(C) 相邻元素交换(D) 第1行与第1列对调(2) 程序运行的输出结果是(31 )。
31 (A) 147 (B) 258 (C) 123 (D) 369 8. 选择下面程序运行的结果。
# includeint m[3][3]={{1},{2},{3}};int n[3][3]={1,2,3};main(){printf("%d\n",m[1][0]+n[0][0]);printf("%d\n",m[0][1]+n[1][0]);}第1条printf语句行输出的结果是(35 )。
35 (A) 0 (B) 1 (C) 2 (D) 3第2条printf语句行输出的结果是(36 )。
36 (A) 0 (B) 1 (C) 2 (D) 39. 选择下面程序运行的结果(设int占2个字节)# includemain(){struct date{int year,month,day;}today;union{long i;int k;char c;}mix;printf("date=%d\n",sizeof(struct date));printf("mix=%d\n",sizeof(mix));}第1条printf语句行输出的结果为(37 )。
程序设计基础课后答案 第七章
{
cout<<"Input wage:";
cin>>array[i].fWage;
{
if(time==1)
total+=high;
else
{
high=high/2;
total=total+2*high;
}
}
cout<<"total="<<total<<"m,high="<<high/2<<"m./n";
}
8、有四个学生,上地理课时提出我国四大淡水湖的排序如下:
甲:洞庭湖最大,洪泽湖最小,鄱阳湖第三;
乙:洪泽湖最大,洞庭湖最小,鄱阳湖第二;太湖第三;
丙:洪泽湖最小,洞庭湖第三;
丁:鄱阳湖最大,太湖最小,洪泽湖第二;洞庭湖第三;
对于各个湖泊的地位,每个人只说对了一个。根据以上情况,编一个程序,让计算机判断各个湖泊应处在第几位。
【问题分析】用变量A,B,C,D分别表示洞庭湖,洪泽湖,鄱阳湖和太湖,变量的值表示第几大。让A,B,C,D分别从1到4变化,找出满足条件的解。由于4个变量的值各不相同,所以4个变量的和为10,积为24,为减少循环次数,用3个变量的值,即可确定第四个变量的值。根据题目中甲、乙、丙、丁4个学生所说的话,可以总结出下列关系式:
{
int A[40];
int pos=0;
int key=0; //数组初始化
for(int i=0;i<40;i++)
c程第七章数组上机习题
第七章数组问题与思考1.定义如下变量和数组:int k ;int a[3][3]={ 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;则下面语句的输出结果是( a )for(k=0;k<3;k++) printf("%d",a[k][2-k]);A、357B、369C、 159D、 1472.执行下面的程序段后,变量k中的值为( a )int k=3,s[2];s[0]=k;k=s[1]*10;A、不定值B、33C、30D、103.设有数组定义:char array [ ]="China";则数组 array所占的空间为(c )A、4个字节B、5个字节C、6个字节D、7个字节4. 如下程序的输出结果是( d )main( ){ int n[5]={0,0,0},i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;printf("%d\n",n[k]);}A、不确定的值B、2C、1D、05.有如下程序main( ){ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++) s+=a[i][j];printf("%d\n",s);}该程序的输出结果是( a )A、18B、19C、20D、216.以下程序的输出结果是( c )main( ){ int i,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++) printf("%d,",x[i][2-i]);}A、1,5,9,B、1,4,7,C、3,5,7,D、3,6,9,7.当执行下面的程序时,如果输入ABC,则输出结果是(a)#include "stdio.h"#include "string.h"main( ){ char ss[10]="1,2,3,4,5";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A、ABC6789B、ABC67C、12345ABC6D、ABC456789 8.以下程序段的输出结果是( a )char s[ ]= "\\141\141abc\t";printf("%d\n",strlen(s));A、9B、12C、13D、149. 下面是对s的初始化,其中不正确的是( d )A、char s[5]={“abc”};B、char s[5]={‘a’,’b’,’c’};C、char s[5]=“”;D、char s[5]=”abcde”10.以下程序的输出结果是____________________main( ){char s[ ]="abcdef";s[3]= '\0';printf("%s\n",s);}11.下列程序段的输出结果是_____________main( ){ char b[]="Hello,you";b[5]=0;printf("%s \n", b );}12.在C语言中,二维数组元素在内存中的存放顺序是_____________13.设有定义语句“ int a[3][4]={{1},{2},{3}} ” ,则a[1][1]值为_____________,a[2][1]的值为_____________14.若在程序中用到“ putchar() ” 函数时,应在程序开头写上包含命令_____________,若在程序中用到“ strlen() ” 函数时,应在程序开头写上包含命令________ #include<string.h>_____15.下面程序的功能是输出数组s中最大元素的下标,请填空。
c语言程序设计课后习题答案第7章
#include<stdio.h>main(){int a[10],n,sum=0,i;float ave;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);sum=sum+a[i];}ave=1.0*sum/n;printf("ave=%.2f\n",ave);}/*练习7-2*/#include<stdio.h>main(){int a[10],n,i;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){printf("第%d个:\n",i+1);scanf("%d",&a[i]);printf("倒序:\n");while(a[i]!=0){printf("%d",a[i]%10);a[i]=a[i]/10;}printf("\n");}}#include<stdio.h>main(){int a[5],x,i,k=0;printf("enter 5 ge zheng shu:\n");for(i=0;i<5;i++)scanf("%d",&a[i]);printf("enter x:\n");scanf("%d",&x);for(i=0;i<5;i++)if(a[i]==x){printf("xia biao wei : %d\n",i);k=1;}if(k==0)printf("Not Found\n");}/*练习7-4*/#include<stdio.h>main(){int a[10],n,i,k=0,x,max;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);max=a[0];for(i=1;i<=n-1;i++)if(max<a[i]){max=a[i];k=i;}printf("max=%d xia biao=%d",max,k);x=a[n-1];a[n-1]=a[k];a[k]=x;printf("\n");for(i=0;i<n;i++)printf(" %d ",a[i]);printf("\n");}/*练习7-11*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;str[i]='\0';printf("再输入一个字符:\n");str[80]=getchar();for(j=0;j<=i-1;j++)if(str[80]==str[j])count++;printf("%c字符在字符串中出现的次数为:%d\n",str[80],count);for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}/*习题七1*/#include<stdio.h>main(){int x,y,n,a[10],i,min,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);min=0;for(i=1;i<n;i++)if(a[min]>a[i])min=i;max=0;for(i=1;i<n;i++)if(a[max]<a[i])max=i;x=a[min];a[min]=a[0];a[0]=x;y=a[max];a[max]=a[n-1];a[n-1]=y;for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七2*/#include<stdio.h>main(){int x,n,a[10],i,j,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++){ max=i-1;for(j=i;j<n;j++)if(a[max]<a[j])max=j;x=a[max];a[max]=a[i-1];a[i-1]=x;}for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七4*/#include<stdio.h>main(){int m,n,a[6][6],i,j,b[6]={0};printf("输入m:\n");scanf("%d",&m);printf("输入n:\n");scanf("%d",&n);printf("输入%d和%d的矩阵:\n",m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);b[i]=b[i]+a[i][j];}}printf("shu chu:\n");for(i=0;i<m;i++){for(j=0;j<n;j++)printf(" %d",a[i][j]);printf("\n");}printf("shu chu hang he :\n");for(i=0;i<m;i++)printf("%4d",b[i]);printf("\n");}/*习题7.6*/#include<stdio.h>main(){char str[80];int i,j;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("倒序输出:\n");for(j=i-1;j>=0;j--)putchar(str[j]);printf("\n");}/*新7.6*/#include<stdio.h>main(){int a[10],i,n;printf("输入整数n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);}printf("倒序输出:\n");for(i=0;i<n;i++){printf("%5d",a[n-1-i]);}printf("\n");}/*习题7.7*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出其中的大写辅音字母:\n");for(j=0;j<=i-1;j++)if(str[j]>='B'&&str[j]<='Z'&&str[j]!='E'&&str[j]!='I'&&str[j]!='O'&&str[j]!='U'){putchar(str[j]);count++;}printf("\n");printf("大写辅音字母数量为:%d\n",count);}/*习题7.8*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出相应交换后的字符串:\n");for(j=0;j<=i-1;j++)if(str[j]>='A'&&str[j]<='Z')str[j]=155-str[j];for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}上文已完。
c语言第七章数组课后练习题答案
c语言第七章数组课后练习题答案第七章数组学习目的与要求:1 、重点掌握一维数组的定义和引用;、基本掌握二维数组的定义和引用;、重点掌握字符型数组的定义与引用;、能正确使用字符串处理函数;、学会使用数组解决实际问题。
重点:1 、一维数组的定义与引用;、二维数组的定义与引用;、字符数组的定义与引用;第1讲知识归纳:1、一维数组的定义:类型说明符数组名[ 常量表达式 ] ;数组名后必须用方括弧 [ ] ,用其他括弧均错误;方括弧中的常量表达式表示数组的元素个数;方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;2、一维数组的引用:数组名[ 下标 ] //下标从0如 int a[10] ;//可以引用的数组元素为不是本数组元素;3、一维数组的初始化:int a[3] ;a = { 1,3,} ;可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, ??, float 0.0 ;如 int a [3]= {1,} ; //a[0] =1 ; a[1]= ; a[2]= 0 ;在对数组全部元素赋初值时,可以不指定元素个数;可以在循环控制下,给数组各元素赋值;如:int a[10] ;fora [ i ] = i ;基础训练一、选择题1、在c语言中,引用数组元素时,其数组下标的数据类型允许是。
A)整型常量 B)整型表达式 )整型常量或整型表达式D)任何类型的表达式2、要说明一个有10个int元素的数组,应当选择语句。
) int a[10]; B) int a; C) int a[9] D) int a[11]3、以下对数组的正确定义是:。
A) float b[5.0] ) float b[5] C) float b D) float b[]4、对以下说明语句的正确理解是。
int a[10]={6,7,8,9,10};A)将5个初值依次赋给a[1]至a[5]C语言复习题)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确5、已知:int a[10];则对a数组元素的正确引用是。
苏小红c语言程序设计课后答案
苏小红c语言程序设计课后答案苏小红的《C语言程序设计》是一本广泛使用的教材,它以清晰的结构和丰富的示例,帮助学生掌握C语言的基础知识和编程技巧。
课后答案对于学生来说是一个重要的学习资源,可以帮助他们检查自己的学习成果,加深对知识点的理解。
以下是一些可能的课后答案示例,用于帮助学生复习和理解C语言程序设计的相关概念。
第一章:C语言概述1. C语言的发展历史:C语言由Dennis Ritchie在20世纪70年代初期开发,最初用于UNIX操作系统的编写。
2. C语言的特点:C语言是一种结构化语言,具有高度的灵活性和强大的功能,能够进行底层系统编程。
第二章:C语言基础1. 数据类型:C语言提供了多种数据类型,包括整型(int)、浮点型(float和double)、字符型(char)等。
2. 变量声明:变量在使用前必须声明,声明时需要指定数据类型和变量名。
第三章:运算符和表达式1. 算术运算符:包括加(+)、减(-)、乘(*)、除(/)等。
2. 赋值运算符:如`=`,`+=`,`-=`等,用于给变量赋值或进行运算后赋值。
第四章:控制结构1. 条件语句:如`if`,`else if`,`else`,用于根据不同的条件执行不同的代码块。
2. 循环语句:包括`for`循环、`while`循环和`do-while`循环,用于重复执行代码块。
第五章:数组1. 一维数组:存储相同类型的元素,可以通过下标访问数组元素。
2. 多维数组:如二维数组,可以看作是数组的数组。
第六章:函数1. 函数定义:使用`return`类型和函数名来定义函数。
2. 函数调用:通过函数名和必要的参数来调用函数。
第七章:指针1. 指针变量:存储另一个变量的内存地址。
2. 指针运算:包括地址运算和指针的增减。
第八章:结构体和联合体1. 结构体:可以包含不同类型的数据成员。
2. 联合体:所有成员共享相同的内存位置。
第九章:预处理指令1. 宏定义:使用`#define`来定义常量或代码片段。
C语言第7章习题
7. 排序问题
main() {int a[10]; int i,j,t;/* i,j作循环变量,t作两两比较的临时变量*/ printf("input 10 numbers:\n"); for(i=0;i<10;i++)
1)第 1 趟:将每相邻两个数比较,大数交换到
后面,经n-1次两两相邻比较后,最大的数已交换
到最后一个位置。
演示
2)第 2 趟:将前n-1个数(最大的数已在最后)按 上法比较,经n-2次两两相邻比较后得次大的数; 3)依次类推,n个数共进行n-1趟比较,
在第j趟中要进行n-j次两两比较。
7. 排序问题 冒泡法排序算法的流程图:
for(i=0;i<20;i++)
{
printf("%7d",f[i]);
if((i+1)%5==0)
printf("\n");
}}
7. 排序问题
数据的排序就是将一批数据由小大到(升序)或由 大到小(降序)进行排列。常用的有选择法、冒泡法。 1.选择法排序
算法 (升序 )
( 设有n个数,存放在数组A(1)…..A(n)中)
1)第1遍:从中选出最小的数,与第 1个数交换 位置;
(演示)
753 8 91 6 4
7. 排序问题
2)第2遍:除第1 个数外,其余n-1个数中选最小的 数,与第2个数交换位置;
(演示)
17 5 3 8 9 71 6 4
3)依次类推,选择了n-1次后,这个数列已按升 序排列。
7. 排序问题 选择法排序算法的流程图:
1. 已知:int a[][3]={0,1,2,3,4,5,6,7}; 求数组 a第一维的大小。
C语言程序设计(第三版)谭浩强习题与答案 第七章
7.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051
∶
∶
main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
或
main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
C语言程序设计教程 第七章 课后习题参考答案
}
}
void print(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
void sum(int a[][N],int b[][N],int m,int n)
print(a,size);
reverse(a,size);
printf("\n");
return 0;
}
void print(int a[],int n)
{
int i;
printf("原:\n");
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
for(i=0;i<n;i++)
input(b,M,N);
print(b,M,N);
printf("A+B=\n");
sum(a,b,M,N);
return 0;
}
void input(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:姓名:成绩:
程序设计基础(C)第七章数组习题
一、选择题
1.下列叙述中错误的是()。
A)对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)在程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数
2.下列关于字符串的叙述中正确的是()。
A)C 语言中有字符串类型的常量和变量
B)两个字符串中的字符个数相同时才能进行字符串大小的比较
C)可以用关系运算符对字符串的大小进行比较
D)空串一定比空格打头的字符串小
3.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
A)scanf( ) B)getchar( ) C)gets( ) D)getc( )
4.若有定义语句:int a[3][6];,按在内存中的存放顺序,a 数组的第10 个元素是()。
A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4]
5.已有定义:char a[ ]="xyz",b[ ]={'x', 'y', 'z'};,下列叙述中正确的是()。
A)数组a 和b 的长度相同 B)a 数组长度小于b 数组长度
C)a 数组长度大于b 数组长度 D)上述说法都不对
6.下列程序的输出结果是()。
main( )
{ char a[7]="a0\0a0\ 0"; int i,j;
i=sizeof(a);
j=strlen(a);
printf("%d %d\n",i,j);
}
A)2 2 B)7 6
C)7 2 D)6 2
7.下列能正确定义一维数组的选项是()。
A)int a[5]={0,1,2,3,4,5}; B)char a[ ]={0,1,2,3,4,5};
C)char a={'A', 'B', 'C'}; D)int a[5]="0123";
8.有以下程序
#include
main()
{ int a[]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0:
switch(a[i]%2)
{ case 0:a[i]++;break;
case 1:a[i]--;
} break;
case 1:a[i]=0;
}
for(i=0;i<4;i++)
printf("%d ",a[i]);
printf("\n");
}
程序运行后的输出结果是()。
A)3 3 4 4
B)2 0 5 0
C)3 0 4 0
D)0 3 0 4
9.若已定义:
int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中0≤i≤9,则对a 数组元素的引用不正确的是()。
A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))
10.以下程序的输出结果是()。
A)3 B)4 C)1 D)2
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));
}
11. 以下程序的输出结果是()。
A)不确定的值 B)3 C)2 D)1
main()
{
int n[2]={0},i,j,k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[i]+1;
printf("%d\n",n[k]);
}
12. 以下程序的输出结果是()。
A)17 B)18 C)19 D)20 main()
{
int a[ ]={2,4,6,8,10},y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++) y+=*(p+x);
printf("%d\n",y);
}
13. 以下程序的输出结果是()。
A)0987654321 B)4321098765 C)5678901234 D)0987651234 fun(int *s,int n1,int n2)
{
int i,j,t;
i=n1; j=n2;
while(i<j)
{
t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;
i++; j--;
}
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0},*p=a,i;
fun(p,0,3); fun(p,4,9); fun(p,0,9);
for(i=0;i<10;i++) printf("%d",*(a+i));
}
14 若有定义语句int (*p)[M]; 其中的标识符p 是()。
A) M 个指向整型变量的指针
B) 指向M 个整型变量的函数指针
C) 一个指向具有M 个整型元素的一维数组指针
D) 具有M 个指针元素的一维指针数组,每个元素都只能指向整型量
二、填空题
1 若有以下定义:
double w[10];
则w 数组元素下标的上限是____,下限是____。
2. 以下程序的输出结果是____。
main()
{ int arr[10],i,k=0;
for(i=0; i<10; i++) arr[i]=i;
for(i=0; i<4; i++) k+=arr[i]+i;
printf("%d\n",k);
}
3. 以下程序的输出结果是____.
main()
{ int i,j,row,col,m;
int arr[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
m=arr[0][0];
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if(arr[i][j]<m)
{ m=arr[i][j]; row=i; col=j; }
printf("%d,%d,%d\n",m,row,col);
}
4. 以下findmax 返回数组s 中最大元素的下标,数组中元素的个数由t 传入,请填空。
findmax(int s[],int t)
{ int k,p;
for(p=0,k=p; p<t; p++)
if(s[p]>s[k]) ____;
return ____;
}。