谭浩强C语言 第十章课后习题
- 格式:doc
- 大小:118.50 KB
- 文档页数:21
谭浩强版C语言的第十章《指针》答案第十章《指针》答案如下inc/testPtr.h#include <string.h>#include <ctype.h>#include <math.h>#include <assert.h>#define SIZE 1024int a2i(char *start, char *end){int size = 0, ret = 0;long base = 0;size = end - start + 1;base = (long)pow(10, size - 1);while(size-- > 0){ret += (*start++ - '0') * base;base /= 10;}return ret;}int extraNum(char *str, int arr[]){int ite = 0, counter = 0;char *start = NULL, *end = NULL;while(*str != '\0'){if(isdigit(*str)){start = end = str;while( isdigit(*end) && *end != '\0'){++end;}arr[ite++] = a2i(start, end-1);str = end;}else{str++;}}return ite;}int sortStr(char *arr[], int size){int ite1 = 0, ite2 = 0, minPos = 0;char *tmp;for(ite1 = 0; ite1 < size - 1; ite1++){minPos = ite1;for(ite2 = ite1 + 1; ite2 < size; ++ite2 ){if( strcmp(arr[ite2], arr[minPos]) < 0 ){minPos = ite2;}}if(minPos != ite1){tmp = arr[minPos];arr[minPos] = arr[ite1];arr[ite1] = tmp;}}return 0;}int sort(int arr[], int size){int minPos = 0, ite1 = 0, ite2 = 0, tmp = 0;for(ite1 = 0; ite1 < size - 1; ite1++){minPos = ite1;for(ite2 = ite1 + 1; ite2 < size; ite2++){if( arr[ite2] < arr[minPos] ){minPos = ite2;}}if(minPos != ite1){tmp = arr[ite1];arr[ite1] = arr[minPos];arr[minPos] = tmp;}}return 0;}int sortPtr(int arr[], int size){int minPos = 0, ite1 = 0, ite2 = 0, tmp = 0;for(ite1 = 0; ite1 < size - 1; ite1++){minPos = ite1;for(ite2 = ite1 + 1; ite2 < size; ite2++){if( *(arr + ite2) < *(arr + minPos) ){minPos = ite2;}}if(minPos != ite1){tmp = *(arr + ite1);*(arr + ite1) = *(arr + minPos);*(arr + minPos) = tmp;}}return 0;}int getMultiArr(int arr[][5], int n){int i = 0, j = 0, min = 0, tmp = 0, size = 5 * n;int *p = NULL, pos[size];/* copy */p = (int *)malloc(size * sizeof(int));assert(p != NULL);memcpy(p, arr, size * sizeof(int));/* sort */for(i = 0; i < size - 1; i++){min = i;for(j = i + 1; j < size; j++){if( *(p + j) < *(p + min)){min = j;}}if(min != i){tmp = *(p + min);*(p + min) = *(p + i);*(p + i) = tmp;}}/* move */for(i = 0; i < n; i++){for(j = 0; j < 5; j++){if( *p == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[0][0];arr[0][0] = tmp;continue;}if( *(p + 1) == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[0][4];arr[0][4] = tmp;continue;}if( *(p + 2) == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[n - 1][0];arr[n - 1][0] = tmp;continue;}if( *(p + 3) == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[n - 1][4];arr[n - 1][4] = tmp;continue;}if( *(p + size - 1) == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[n/2][2];arr[n/2][2] = tmp;continue;}}}free(p);p = NULL;return 0;}int statStr(char *str){int upper = 0, lower = 0, space = 0, num = 0, other = 0;while(*str != '\0'){if(isdigit(*str)){num++;}else if (isupper(*str)){upper++;}else if (islower(*str)){lower++;}else if (isspace(*str)){space++;}else{other++;}str++;}assert(3 == upper);assert(5 == lower);assert(10 == num);assert(2 == space);assert(6 == other);return 0;}int average(int(*stu)[6], int classNum, int stuNum){int i = 0, ave = 0;for(i = 0; i < stuNum; i++){ave += (*(stu + i))[classNum];}ave /= stuNum;return ave;}int searchStu(int(*stu)[6], int stuNum){int counter = 0, i = 0, j = 1, stuCounter = 0;for (i = 0; i < stuNum; i++){counter =0;for(j = 1; j < 6; j++){if( (*(stu + i))[j] < 60 ){counter++;}}if(counter >= 2){stuCounter++;}}return stuCounter;}int moveInt(int arr[], int n, int m){int i = 0, *p = NULL;p = (int*)malloc(n * sizeof(int));assert(p != NULL);memcpy(p + m, arr, (n - m) * sizeof(int));memcpy(p, arr + n -m , m * sizeof(int));memcpy(arr, p, n * sizeof(int));free(p);p = NULL;return 0;}int myStrcmp(char *p1, char*p2){int ret = 0;while((*p1 != '\0') && (*p2 != '\0') && ( *p1 == *p2 ) ) {p1++;p2++;}if(*p1 == '\0'){ret = -1;}else if (*p2 == '\0'){ret = 1;}else{ret = (*p1 - *p2) > 0 ? 1 : -1;}return ret;}int revArr(int a[], int size){int tmp = 0, *start = NULL, *end = NULL;start = a;end = start + size - 1;size = size / 2;while(size >= 0){tmp = *(start + size);*(start + size) = *(end - size);*(end - size) = tmp;size--;}return 0;}char *getMonth(char *month[], int which) {assert(which <= 12);return ( *(month + which - 1));}int getStr(char *dest, char* src, int m) {int len = 0;len = strlen(src) + 1 - m;src = src + m - 1;memcpy(dest, src, len * sizeof(char));return 0;}int removePer3(int arr[], int size){int i = 0;for(i = 0; i < size; i++){if(((arr[i]) % 3) == 0){arr[i] = 0;}}return 0;}int getMinMax(int a[], int size){int i = 0, min = 0, max = 0, tmp = 0;min = max = 0;for(i = 0; i < size; i++){if (a[i] <= a[min]){min = i;}if(a[i] >= a[max]){max = i;}}tmp = a[0];a[0] = a[min];a[min] = tmp;tmp = a[size - 1];a[size - 1] = a[max];a[max] = tmp;}int test_10_1(){int ite = 0, iRet = 0, arr[5] = {121, 234, 456456, 543, 23};iRet = sortPtr(arr, 5);assert (23 == arr[0]);assert (121 == arr[1]);assert (234 == arr[2]);assert (543 == arr[3]);assert (456456 == arr[4]);printf("\r\nTest_10_1 Passed!");return 0;}int test_10_2(){int ite = 0, iRet = 0;char *arr[10] = { "In the IBM Rational ClearCase environment", \"An auditable history of source files and software builds is maintained in your organization", \"The efforts of your team can be coordinated into a definable"};iRet = sortStr(arr, 3);assert( strcmp(arr[0], "An auditable history of source files and software builds is maintained in your organization") == 0 );assert( strcmp(arr[1], "In the IBM Rational ClearCase environment") == 0);assert( strcmp(arr[2], "The efforts of your team can be coordinated into a definable") == 0);printf("\r\nTest_10_2 Passed!");return 0;}int test_10_3(){int ret = 0, a[10] = {7,2,3,9,1,0,7,6,5,0};ret = getMinMax(a, 10);assert(a[0] == 0);assert(a[9] == 9);printf("\r\nTest_10_3 Passed!");return 0;}int test_10_4(){int ret = 0, arr[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};ret = moveInt(arr, 9, 3);assert(6 == arr[0]);assert(7 == arr[1]);assert(8 == arr[2]);assert(0 == arr[3]);assert(1 == arr[4]);assert(2 == arr[5]);assert(3 == arr[6]);assert(4 == arr[7]);assert(5 == arr[8]);printf("\r\nTest_10_4 Passed!");return 0;}int test_10_5(){int ret = 0, i = 0, a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};ret = removePer3(a, 12);assert(a[2] == 0);assert(a[5] == 0);assert(a[8] == 0);assert(a[11] == 0);printf("\r\nTest_10_5 Passed!");return 0;}int test_10_7(){int ret = 0;char s2[100] = {0}, *s1 = "hello world!";getStr(s2, s1, 7);assert( strcmp(s2, "world!") == 0);printf("\r\nTest_10_7 Passed!");return 0;}int test_10_8(){int ret = 0;char *str = "a123xABC ??#$%^ 302tab5876";ret = statStr(str);if(ret == 0){printf("\r\nTest_10_8 Passed!");}return 0;}int test_10_10(){int i = 0, j = 0, ret = 0;int arr[5][5] = { \{16, 17, 18, 19, 20}, \{11, 12, 13, 14, 15}, \{1, 2, 3, 4, 5}, \{21, 22, 23, 24, 25}, \{6, 7, 8, 9, 10}, \};ret = getMultiArr(arr, 5);assert(1 == arr[0][0] );assert(2 == arr[0][4] );assert(3 == arr[4][0] );assert(4 == arr[4][4] );assert(25 == arr[2][2] );printf("\r\nTest_10_10 Passed!");return 0;}int test_10_11(){int ite = 0, iRet = 0;char *arr[10] = { "In the", \"An aud", \"The ef", \"Proces", \"Sets o", \"Unifie", \"Out-of", \"Practi", \"Ration", \"Explor" \};iRet = sortStr(arr, 10);assert( strcmp(arr[0], "An aud") == 0 );assert( strcmp(arr[1], "Explor") == 0);assert( strcmp(arr[2], "In the") == 0);assert( strcmp(arr[3], "Out-of") == 0);assert( strcmp(arr[4], "Practi") == 0);assert( strcmp(arr[5], "Proces") == 0);assert( strcmp(arr[6], "Ration") == 0);assert( strcmp(arr[7], "Sets o") == 0);assert( strcmp(arr[8], "The ef") == 0);assert( strcmp(arr[9], "Unifie") == 0);printf("\r\nTest_10_11 Passed!");return 0;}int test_10_12(){int ite = 0, iRet = 0;char *arr[10] = { "In the IBM Rational ClearCase environment", \"An auditable history of source files and software builds is maintained in your organization", \"The efforts of your team can be coordinated into a definable", \"Process by using one of the following", \"Sets of Rational ClearCase features", \"Unified Change Management (UCM),", \"Out-of-the-box process that supports best", \"Practices for change management as described in the IBM", \"Rational Unified Process. Project managers can configure", \"Explorer. For more information about Rational ClearCase"};iRet = sortStr(arr, 10);assert( strcmp(arr[0], "An auditable history of source files and software builds is maintained in your organization") == 0 );assert( strcmp(arr[1], "Explorer. For more information about Rational ClearCase") == 0);assert( strcmp(arr[2], "In the IBM Rational ClearCase environment") == 0);assert( strcmp(arr[3], "Out-of-the-box process that supports best") == 0);assert( strcmp(arr[4], "Practices for change management as described in the IBM") == 0);assert( strcmp(arr[5], "Process by using one of the following") == 0);assert( strcmp(arr[6], "Rational Unified Process. Project managers can configure") == 0);assert( strcmp(arr[7], "Sets of Rational ClearCase features") == 0);assert( strcmp(arr[8], "The efforts of your team can be coordinated into a definable") == 0);assert( strcmp(arr[9], "Unified Change Management (UCM),") == 0);printf("\r\nTest_10_12 Passed!");return 0;}int test_10_14(){int ret = 0, a[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};ret = revArr(a, 11);assert(10 == a[0]);assert(9 == a[1]);assert(8 == a[2]);assert(7 == a[3]);assert(6 == a[4]);assert(5 == a[5]);assert(4 == a[6]);assert(3 == a[7]);assert(2 == a[8]);assert(1 == a[9]);assert(0 == a[10]);printf("\r\nTest_10_14 Passed!");return 0;}int test_10_15(){int ave = 0, ret = 0;int student[4][6] = { \{1, 100, 90, 80, 70, 97}, \{2, 34, 45, 56, 78, 97}, \{3, 76, 34, 68, 84, 12}, \{4, 90, 90, 90, 75, 28} \};ave = average(student, 1, 4);ret = searchStu(student, 4);assert(75 == ave);assert(2 == ret);printf("\r\nTest_10_15 Passed!");return 0;}int test_10_16(){int iRet = 0, ite = 0, arr[SIZE] = {0};char *str = "a123x456 17960? 302tab5876";iRet = extraNum(str, arr);assert(123 == arr[0]);assert(456 == arr[1]);assert(17960 == arr[2]);assert(302 == arr[3]);assert(5876 == arr[4]);printf("\r\nTest_10_16 Passed!");return 0;}int test_10_17(){int ret = 0;char *s1 = "abcd", *s2 = "abCd";ret = myStrcmp(s1, s2);assert(ret == 1);char *s3 = "aBcd", *s4 = "abCd";ret = myStrcmp(s3, s4);assert(ret == -1);char *s5 = "abcde", *s6 = "abcd";ret = myStrcmp(s5, s6);assert(ret == 1);char *s7 = "abcd", *s8 = "abcde";ret = myStrcmp(s7, s8);assert(ret == -1);char *s9 = "abcd", *s10 = "abCde";ret = myStrcmp(s9, s10);assert(ret == 1);printf("\r\nTest_10_17 Passed!");return 0;}int test_10_18(){int which = 0;char *month[12] = { \"January", \"February", \"March", \"April", \"May", \"June", \"July", \"August", \"September", \"October", \"November", \"December" \};which = 11;assert( strcmp("November", getMonth(month, which)) == 0 );which = 7;assert( strcmp("July", getMonth(month, which)) == 0 );printf("\r\nTest_10_18 Passed!");return 0;}int test_10_20(){int ite = 0, iRet = 0;char *arr[5] = { "In the IBM Rational ClearCase environment", \"An auditable history of source files and software builds is maintained in your organization", \"The efforts of your team can be coordinated into a definable", \"Process by using one of the following", \"Sets of Rational ClearCase features" \};iRet = sortStr(arr, 5);assert( strcmp(arr[0], "An auditable history of source files and software builds is maintained in your organization") == 0 );assert( strcmp(arr[1], "In the IBM Rational ClearCase environment") == 0);assert( strcmp(arr[2], "Process by using one of the following") == 0);assert( strcmp(arr[3], "Sets of Rational ClearCase features") == 0);assert( strcmp(arr[4], "The efforts of your team can be coordinated into a definable") == 0);printf("\r\nTest_10_20 Passed!");return 0;}int test_10_21(){int ite = 0, iRet = 0, arr[5] = {121, 234, 456456, 543, 23};iRet = sort(arr, 5);assert (23 == arr[0]);assert (121 == arr[1]);assert (234 == arr[2]);assert (543 == arr[3]);assert (456456 == arr[4]);printf("\r\nTest_10_21 Passed!");return 0;}int testPtr(){int iRet = 0;#if 0#endifiRet += test_10_1();iRet += test_10_2();iRet += test_10_3();iRet += test_10_4();iRet += test_10_5();iRet += test_10_7();iRet += test_10_8();iRet += test_10_10();iRet += test_10_11();iRet += test_10_12();iRet += test_10_14();iRet += test_10_15();iRet += test_10_16();iRet += test_10_17();iRet += test_10_18();iRet += test_10_20();iRet += test_10_21();return iRet;}src/#include <stdio.h>#include <stdlib.h>#include <assert.h>#include "../inc/testFile.h" #include "../inc/testBits.h" #include "../inc/testPtr.h"int main(){int iRet = 0;#if 0iRet += testFile();assert(iRet == 0);iRet += testBits();assert(iRet == 0);#endifiRet += testPtr();assert(iRet == 0);return 0;}。
第10章对文件的输入输出(2012年9月真题)(40)有以下程序#include <stdio.h>main(){ FILE *fp;int i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++) fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++) fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++) printf("%d,",a[i]);}程序运行后的输出结果是A)4,5,6,1,2,3, B)1,2,3,3,2,1,C)1,2,3,4,5,6, D)6,5,4,3,2,1,答案:D(2012年3月真题)40、以下函数不能用于向文件写入数据的是A ftellB fwriteC fputcD fprintf答案:A(2011年9月真题)40.有以下程序#include<stdio.h>main(){FILE *fp; int k,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp); fp=fopen("d2.dat","r");for(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp); printf("%d,%d\n",k,n); }程序运行后的输出结果是A.1,2B.3,4C.5,6D.123,456答案:C(2011年3月真题)(40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是A)写操作结束后可以从头开始读 B)只能写不能读C)可以在原有内容后追加写 D)可以随意读和写(2010年3月真题)(40)有以下程序#include#include<stdio.h>main(){ FILE *fp;char str[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fopen("myfile.data","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str); puts(str);fclose(fp); }程序运行后的输出结果是A)abc B) 28c C) abc28 D)因类型不一致而出错答案:B(2009年9月真题)(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件答案:C(2009年3月真题)40.有以下程序#include <stdio.h>main(){ FILE *f;f=fopen("filea.txt","w"); fprintf(f,"abc"); fclose(f); }若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt的内容为A)helloabc B)abclo C)abc D)abchello答案:C(2008年9月真题)(40)有以下程序#include <stdio.h>main(){ FILE *pf;char *s1="China", *s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf); /*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是A) China B) Chinang C) ChinaBeijing D) Bei jingChina答案:B(2008年4月真题)30、下列叙述中错误的是( )。
第1章程序设计和C语言1什么是计算机程序1什么是计算机语言1语言的发展及其特点3最简单的C语言程序5最简单的C语言程序举例6语言程序的结构10运行C程序的步骤与方法12程序设计的任务141-5 #include <>int main ( ){ printf ("**************************\n\n"); printf(" Very Good!\n\n");printf ("**************************\n"); return 0;}1-6#include <>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂16什么是算法16简单的算法举例17算法的特性21怎样表示一个算法22用自然语言表示算法22用流程图表示算法22三种基本结构和改进的流程图26用N S流程图表示算法28用伪代码表示算法31用计算机语言表示算法32结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37顺序程序设计举例37数据的表现形式及其运算39常量和变量39数据类型42整型数据44字符型数据47浮点型数据49怎样确定常量的类型51运算符和表达式52语句57语句的作用和分类57最基本的语句——赋值语句59数据的输入输出65输入输出举例65有关数据输入输出的概念67用printf函数输出数据68用scanf函数输入数据75字符数据的输入输出78习题823-1 #include <>#include <>int main(){float p,r,n;r=;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <>#include <>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=;r3=;r2=;r1=;r0=;p1=p*((1+r5)*5); #include <> #include <>int main(){float d=300000,p=6000,r=,m;m=log10(p/(p-d*r))/log10(1+r);printf("m=%\n",m);return 0;}3-4#include <>int main(){int c1,c2;c1=197;c2=198;printf("c1=%c,c2=%c\n",c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return 0;3-5#include <>int main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f %e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); return 0;}3-6#include <>int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;}#include <>int main (){float h,r,l,s,sq,vq,vz;float pi=;printf("请输入圆半径r,圆柱高h∶");scanf("%f,%f",&r,&h); #include <> int main(){ int x,y;printf("输入x:");scanf("%d",&x);if(x<1) /* x<1 */{ y=x;printf("x=%3d, y=x=%d\n" ,x,y);}else if(x<10) /* 1=<x<10 */{ y=2*x-1;printf("x=%d, y=2*x-1=%d\n",x,y);}else /* x>=10 */{ y=3*x-11;printf("x=%d, y=3*x-11=%d\n",x,y);}return 0;}#include <>int main(){int x,y;printf("enter x:");scanf("%d",&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;printf("x=%d,y=%d\n",x,y); return 0;}4-7-2#include <>int main(){int x,y;printf("please enter x:"); scanf("%d",&x);y=0;if(x>=0)if(x>0) y=1;else y=-1;printf("x=%d,y=%d\n",x,y); return 0;}4-8#include <>int main(){ float score;char grade;printf("请输入学生成绩:"); scanf("%f",&score);while (score>100||score<0) {printf("\n 输入有误,请重输"); scanf("%f",&score);}switch((int)(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0: grade='E';}printf("成绩是 %,相应的等级是%c\n ",score,grade); return 0;}4-9#include <>#include <>int main(){int num,indiv,ten,hundred,thousand,ten_thousand,place;位,万位和位数printf("请输入一个整数(0-99999):");scanf("%d",&num);if (num>9999)place=5;else if (num>999)place=4;else if (num>99) .=%d\n",sn);return 0;}5-6#include <>int main(){double s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n;s=s+t;}printf("1!+2!+...+20!=%\n",s);return 0;}5-7#include <>int main(){int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k<=n1;k++) /*计算1到100的和*/{s1=s1+k;}for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/ {s2=s2+k*k;}for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/ {s3=s3+1/k;}printf("sum=%\n",s1+s2+s3);return 0;}5-8#include <>int main(){int i,j,k,n;printf("parcissus numbers are ");for (n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if (n==i*i*i + j*j*j + k*k*k)printf("%d ",n);}printf("\n");return 0;}5-9-1#define M 1000 /*定义寻找范围*/ #include <>int main(){int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数 */{n=0; /* n用来累计a的因子的个数 */s=a; /* s用来存放尚未求出的因子之和,开始时等于a */ for (i=1;i<a;i++) /* 检查i是否a的因子 */if (a%i==0) /* 如果i是a的因子 */{n++; /* n加1,表示新找到一个因子 */s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和 */ switch(n) /* 将找到的因子赋给k1...k9,或k10 */{case 1:k1=i; break; /* 找出的笫1个因子赋给k1 */case 2:k2=i; break; /* 找出的笫2个因子赋给k2 */case 3:k3=i; break; /* 找出的笫3个因子赋给k3 */case 4:k4=i; break; /* 找出的笫4个因子赋给k4 */case 5:k5=i; break; /* 找出的笫5个因子赋给k5 */case 6:k6=i; break; /* 找出的笫6个因子赋给k6 */case 7:k7=i; break; /* 找出的笫7个因子赋给k7 */case 8:k8=i; break; /* 找出的笫8个因子赋给k8 */case 9:k9=i; break; /*找出的笫9个因子赋给k9 */case 10:k10=i; break; /* 找出的笫10个因子赋给k10 */}}if (s==0){printf("%d ,Its factors are ",a);if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子 */if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子 */if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输出一个因子 */if (n>4) printf(",%d",k5); /* 以下类似 */if (n>5) printf(",%d",k6);if (n>6) printf(",%d",k7);if (n>7) printf(",%d",k8);if (n>8) printf(",%d",k9);if (n>9) printf(",%d",k10);printf("\n");}}return 0;}5-9-2#include <>int main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){printf("%d,its factors are ",m); for (i=1;i<m;i++)if (m%i==0) printf("%d ",i); printf("\n");}}return 0;}5-10#include <>int main(){int i,n=20;double a=2,b=1,s=0,t;for (i=1;i<=n;i++){s=s+a/b;t=a,a=a+b,b=t;}printf("sum=%\n",s);return 0;}5-11#include <>int main(){double sn=100,hn=sn/2;int n;for (n=2;n<=10;n++){sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/}printf("第10次落地时共经过%f米\n",sn); printf("第10次反弹%f米\n",hn);return 0;}5-12#include <>int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1;day--;}printf("total=%d\n",x1);return 0;}5-13#include <>#include <>int main(){float a,x0,x1;printf("enter a positive number:");scanf("%f",&a);x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);printf("The square root of % is %\n",a,x1); return 0;}5-14#include <>#include <>int main(){double x1,x0,f,f1;x1=;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("The root of equation is %\n",x1); return 0;}5-15#include <>#include <>int main(){float x0,x1,x2,fx0,fx1,fx2;do{printf("enter x1 & x2:"); scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6; fx2=x2*((2*x2-4)*x2+3)-6; }while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6; if ((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs (fx0)>=1e-5); printf("x=%\n",x0);return 0;}5-16#include <>int main(){int i,j,k;for (i=0;i<=3;i++){for (j=0;j<=2-i;j++)printf(" ");for (k=0;k<=2*i;k++)printf("*");printf("\n");}for (i=0;i<=2;i++){for (j=0;j<=i;j++)printf(" ");for (k=0;k<=4-2*i;k++)printf("*");printf("\n");}return 0;}5-17#include <>int main(){char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/ for (i='x';i<='z';i++)for (j='x';j<='z';j++)if (i!=j)for (k='x';k<='z';k++)if (i!=k && j!=k)if (i!='x' && k!='x' && k!='z')printf("A--%c\nB--%c\nC--%c\n",i,j,k); return 0;}第6章利用数组处理批量数据142怎样定义和引用一维数组142怎样定义一维数组143怎样引用一维数组元素144一维数组的初始化145一维数组程序举例146怎样定义和引用二维数组148怎样定义二维数组149怎样引用二维数组的元素150二维数组的初始化151二维数组程序举例152字符数组154怎样定义字符数组154字符数组的初始化155怎样引用字符数组中的元素155字符串和字符串结束标志156字符数组的输入输出159使用字符串处理函数161字符数组应用举例165习题1686-1#include <>#include <>int main(){int i,j,n,a[101];for (i=1;i<=100;i++)a[i]=i;a[1]=0;for (i=2;i<sqrt(100);i++) for (j=i+1;j<=100;j++) {if(a[i]!=0 && a[j]!=0) if (a[j]%a[i]==0)a[j]=0;}printf("\n");for (i=2,n=0;i<=100;i++) { if(a[i]!=0){printf("%5d",a[i]);n++;}if(n==10){printf("\n");n=0;}}printf("\n");return 0;}6-2#include <>int main(){int i,j,min,temp,a[11];printf("enter data:\n");for (i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}printf("\n");printf("The orginal numbers:\n"); for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");for (i=1;i<=9;i++){min=i;for (j=i+1;j<=10;j++)if (a[min]>a[j]) min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\nThe sorted numbers:\n");for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");return 0;}6-3#include <>int main(){int a[3][3],sum=0;int i,j;printf("enter data:\n");for (i=0;i<3;i++)for (j=0;j<3;j++)scanf("%3d",&a[i][j]);for (i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%6d\n",sum);return 0;}6-4#include <>int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j;for (i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insert data:"); scanf("%d",&number);end=a[9];if (number>end)a[10]=number;else{for (i=0;i<10;i++){if (a[i]>number){temp1=a[i];a[i]=number;for (j=i+1;j<11;j++) {temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}printf("Now array a:\n"); for (i=0;i<11;i++)printf("\n");return 0;}6-5#include <>#define N 5int main(){ int a[N],i,temp;printf("enter array a:\n");for (i=0;i<N;i++)scanf("%d",&a[i]);printf("array a:\n");for (i=0;i<N;i++)printf("%4d",a[i]);for (i=0;i<N/2;i++) n",number);; printf("continu or not(Y/N)");scanf(" %c",&c);if (c=='N'||c=='n')flag=0;}return 0;}6-10#include <>int main(){int i,j,upp,low,dig,spa,oth;char text[3][80];upp=low=dig=spa=oth=0;for (i=0;i<3;i++){ printf("please input line %d:\n",i+1);gets(text[i]);for (j=0;j<80 && text[i][j]!='\0';j++){if (text[i][j]>='A'&& text[i][j]<='Z')upp++;else if (text[i][j]>='a' && text[i][j]<='z') low++; else if (text[i][j]>='0' && text[i][j]<='9') dig++; else if (text[i][j]==' ')spa++;elseoth++;}}printf("\nupper case: %d\n",upp);printf("lower case: %d\n",low);printf("digit : %d\n",dig);printf("space : %d\n",spa);printf("other : %d\n",oth);return 0;}#include <>int main(){ char a[5]={'*','*','*','*','*'}; int i,j,k;char space=' ';for (i=0;i<5;i++){ printf("\n");printf(" ");for (j=1;j<=i;j++)printf("%c",space);for (k=0;k<5;k++)printf("%c",a[k]);}printf("\n");return 0;}6-12a-c#include <>int main(){ int j,n;char ch[80],tran[80];printf("input cipher code:");gets(ch);printf("\ncipher code :%s",ch);while (ch[j]!='\0'){ if ((ch[j]>='A') && (ch[j]<='Z')) tran[j]=155-ch[j];else if ((ch[j]>='a') && (ch[j]<='z')) tran[j]=219-ch[j];elsetran[j]=ch[j];j++;}n=j;printf("\noriginal text:");for (j=0;j<n;j++)putchar(tran[j]);printf("\n");return 0;}6-12b#include <>int main(){int j,n;char ch[80];printf("input cipher code:\n");gets(ch);printf("\ncipher code:%s\n",ch);while (ch[j]!='\0'){ if ((ch[j]>='A') && (ch[j]<='Z'))ch[j]=155-ch[j];else if ((ch[j]>='a') && (ch[j]<='z')) ch[j]=219-ch[j];elsech[j]=ch[j];j++;}n=j;printf("original text:");for (j=0;j<n;j++)putchar(ch[j]);printf("\n");return 0;}6-13#include <>int main(){ char s1[80],s2[40];int i=0,j=0;printf("input string1:");scanf("%s",s1);printf("input string2:");scanf("%s",s2);while (s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("\nThe new string is:%s\n",s1); return 0;}6-14#include <>int main(){ int i,resu;char s1[100],s2[100];printf("input string1:");gets(s1);printf("\ninput string2:");gets(s2);i=0;while ((s1[i]==s2[i]) && (s1[i]!='\0'))i++; if (s1[i]=='\0' && s2[i]=='\0')resu=0;elseresu=s1[i]-s2[i];printf("\nresult:%d.\n",resu);return 0;}6-15#include <>#include <>int main(){ char s1[80],s2[80];int i;printf("input s2:");scanf("%s",s2);for (i=0;i<=strlen(s2);i++)s1[i]=s2[i];printf("s1:%s\n",s1);return 0;}第7章用函数实现模块化程序设计170为什么要用函数170怎样定义函数172为什么要定义函数172定义函数的方法173调用函数174函数调用的形式174函数调用时的数据传递175函数调用的过程177函数的返回值178对被调用函数的声明和函数原型179函数的嵌套调用182函数的递归调用184数组作为函数参数192数组元素作函数实参193数组名作函数参数194多维数组名作函数参数197局部变量和全局变量199局部变量199全局变量200变量的存储方式和生存期204动态存储方式与静态存储方式204局部变量的存储类别205全局变量的存储类别208存储类别小结212关于变量的声明和定义214内部函数和外部函数215内部函数215外部函数215习题2187-1-1#include <>int main(){int hcf(int,int);int lcd(int,int,int);int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("",h);l=lcd(u,v,h);printf("",l);return 0;}int hcf(int u,int v){int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0){u=v;v=r;}return(v);}int lcd(int u,int v,int h) {return(u*v/h);}7-1-2#include <>int Hcf,Lcd;int main(){void hcf(int,int); void lcd(int,int);int u,v;scanf("%d,%d",&u,&v); hcf(u,v);lcd(u,v);printf("",Hcf);printf("",Lcd); return 0;}void hcf(int u,int v) {int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0) {u=v;v=r;}Hcf=v;}void lcd(int u,int v) {Lcd=u*v/Hcf;}7-2#include <>#include <>float x1,x2,disc,p,q;int main(){void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf("input a,b,c:");scanf("%f,%f,%f",&a,&b,&c);printf("equation: %*x*x+%*x+%=0\n",a,b,c); disc=b*b-4*a*c; printf("root:\n");if (disc>0){greater_than_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else if (disc==0){equal_to_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else{smaller_than_zero(a,b);printf("x1=%f+%fi\tx2=%f-%fi\n",p,q,p,q);}return 0;}void greater_than_zero(float a,float b) {x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}void equal_to_zero(float a,float b){x1=x2=(-b)/(2*a);}void smaller_than_zero(float a,float b) {p=-b/(2*a);q=sqrt(-disc)/(2*a);}7-3#include <>int main(){int prime(int);int n;printf("input an integer:");scanf("%d",&n);if (prime(n))printf("%d is a prime.\n",n);elseprintf("%d is not a prime.\n",n); return 0;}int prime(int n){int flag=1,i;for (i=2;i<n/2 && flag==1;i++)if (n%i==0)flag=0;return(flag);}7-4#include <>#define N 3int array[N][N];int main(){ void convert(int array[][3]); int i,j;printf("input array:\n");for (i=0;i<N;i++)for (j=0;j<N;j++)scanf("%d",&array[i][j]);printf("\noriginal array :\n"); for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%5d",array[i][j]);printf("\n");}convert(array);printf("convert array:\n"); for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%5d",array[i][j]); printf("\n");}return 0;}void convert(int array[][3]) {int i,j,t;for (i=0;i<N;i++)for (j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i]; array[j][i]=t;}}#include <>#include <>int main(){void inverse(char str[]); char str[100];printf("input string:");scanf("%s",str);inverse(str);printf("inverse string:%s\n",str);return 0;}void inverse(char str[]){char t;int i,j;for (i=0,j=strlen(str);i<(strlen(str)/2);i++,j--){t=str[i];str[i]=str[j-1];str[j-1]=t;}}7-6#include <>int main(){void concatenate(char string1[],char string2[],char string[]); char s1[100],s2[100],s[100];printf("input string1:");scanf("%s",s1);printf("input string2:");scanf("%s",s2);concatenate(s1,s2,s);printf("\nThe new string is %s\n",s);return 0;}void concatenate(char string1[],char string2[],char string[]) {int i,j; for (i=0;string1[i]!='\0';i++)string[i]=string1[i];for(j=0;string2[j]!='\0';j++)string[i+j]=string2[j];string[i+j]='\0';}7-7#include <>int main(){void cpy(char [],char []);char str[80],c[80];printf("input string:");gets(str);cpy(str,c);printf("The vowel letters are:%s\n",c);return 0;}void cpy(char s[],char c[]){ int i,j;for (i=0,j=0;s[i]!='\0';i++)if (s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U') {c[j]=s[i];j++;}c[j]='\0';}7-8#include <>#include <>int main(){char str[80];void insert(char []);printf("input four digits:");scanf("%s",str);insert(str);return 0;本文档下载自360文档中心,更多营销,职业规划,工作简历,入党,工作报告,总结,学习资料,学习总结,PPT模板下载,范文等文档下载;转载请保留出处。
第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51。
4.1最简单的C语言程序举例61.4.2C语言程序的结构101。
5运行C程序的步骤和方法121。
6程序设计的任务141-5 #include 〈stdio。
h>int main (){ printf ("**************************\n\n”); printf(" Very Good!\n\n”);printf (”**************************\n”);return 0;}1—6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n”);scanf(”%d,%d,%d”,&a,&b,&c);max=a;if (max〈b)max=b;if (max〈c)max=c;printf("The largest number is %d\n",max);return 0;}第2章算法—-程序的灵魂162。
1什么是算法162。
2简单的算法举例172。
3算法的特性212。
4怎样表示一个算法222。
4。
1用自然语言表示算法222。
4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4。
4用N S流程图表示算法282。
4。
5用伪代码表示算法312。
4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计373。
1顺序程序设计举例373.2数据的表现形式及其运算393。
2.1常量和变量393.2。
2数据类型423.2.3整型数据443。
2。
4字符型数据473。
2.5浮点型数据493。
2。
6怎样确定常量的类型513。
c程序设计谭浩强习题答案C程序设计是计算机科学与技术专业学生必修的一门课程,谭浩强教授编写的《C程序设计》教材广泛用于教学中,其习题集也是学生学习过程中不可或缺的练习材料。
以下是针对该教材习题的一些参考答案,供参考使用。
第一章:C语言概述1. 问题1:解释C语言的特点。
- 答案:C语言是一种通用的、过程式的编程语言,具有以下特点:简洁、高效、可移植性高、结构化、支持多种编程范式等。
2. 问题2:C语言的发展历史。
- 答案:C语言由丹尼斯·里奇在1972年开发,最初用于UNIX操作系统的编写。
随着UNIX系统的流行,C语言也逐渐被广泛使用并发展。
第二章:数据类型、运算符和表达式1. 问题1:C语言中基本数据类型有哪些?- 答案:C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)等。
2. 问题3:解释运算符的优先级。
- 答案:运算符优先级决定了表达式中各运算符的计算顺序。
例如,乘除运算符优先于加减运算符。
第三章:控制语句1. 问题1:解释if语句的用法。
- 答案:if语句用于条件判断,根据条件是否为真来决定执行不同的代码块。
2. 问题2:while循环和for循环的区别是什么?- 答案:while循环在每次迭代前检查条件,而for循环在循环开始前初始化,然后在每次迭代后检查条件。
第四章:数组1. 问题1:一维数组和多维数组的区别。
- 答案:一维数组是线性的,只有一个索引;多维数组可以看作是数组的数组,具有多个索引。
2. 问题2:数组的初始化方法。
- 答案:数组可以通过赋值语句逐个初始化,或者使用初始化列表在声明时初始化。
第五章:指针1. 问题1:指针是什么?- 答案:指针是一种变量,它存储了另一个变量的内存地址。
2. 问题2:指针和数组的关系。
- 答案:数组名可以作为指向数组首元素的指针使用,指针可以用于遍历数组。
第六章:函数1. 问题1:函数的定义和声明。
目录重要次重要重复或欲删除基础第一章 C语言概述1.1 选择题1.2 填空题第二章数据类型、运算符与表达式2.1 选择题2.2 填空题第三章最简单的C程序设计3.1 选择题3.2 填空题第四章逻辑运算和判断选取控制4.1 选择题4.2 填空题4.3 编程题第五章循环控制5.1 选择题5.2 填空题5.3 编程题第六章数组6.1 选择题6.2 填空题6.3 编程题第七章函数7.1 选择题7.2 填空题7.3 编程题第八章编译预处理8.1 选择题8.2 填空题8.3 编程题第九章指针9.1 选择题9.2 填空题9.3 编程题第十章结构体和共用体10.1 选择题10.2 填空题10.3 编程题第十一章位运算11.1 选择题11.2 填空题11.3 编程题第十二章文件12.1 选择题12.2 填空题12.3 编程题第一章 C语言概述1.1 选择题*1.1一个C程序的执行是从。
A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束参考答案:A参考分析:C语言总是从main函数开始,main函数结束。
但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。
如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。
*1.2以下叙述正确的是。
A)在C程序中,main函数必须位于程序的最前面B)在C程序的每一行只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误参考答案:C参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。
c语言程序设计第三版谭浩强课后习题及答案《C语言程序设计第三版谭浩强课后习题及答案》C语言是一种广泛应用于系统软件和应用软件开发的高级语言,它的设计目标是提供一种能以自然语言的形式来编写程序的语言。
《C语言程序设计第三版谭浩强》是一本经典的教材,深受广大程序员和学习者的喜爱。
在学习C语言的过程中,课后习题是非常重要的,它可以帮助我们巩固所学知识,提高编程能力。
下面我们就来看一些《C语言程序设计第三版谭浩强》的课后习题及答案。
1. 编写一个程序,输入两个整数,求出它们的和并输出。
```c#include <stdio.h>int main(){int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("它们的和为:%d\n", sum);return 0;}```2. 编写一个程序,输入一个字符,判断它是大写字母、小写字母还是数字,并输出相应的信息。
#include <stdio.h>int main(){char ch;printf("请输入一个字符:");scanf("%c", &ch);if (ch >= 'A' && ch <= 'Z'){printf("它是大写字母\n");}else if (ch >= 'a' && ch <= 'z') {printf("它是小写字母\n");}else if (ch >= '0' && ch <= '9') {printf("它是数字\n");}else{printf("它是其他字符\n");return 0;}```以上是《C语言程序设计第三版谭浩强》中的两道课后习题及其答案。
谭浩强C语言程序设计习题参考答案第一章1.6main(){int a,b,c,max;printf("input three numbers:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("max=%d",max);}第二章2.3(1)(10)10=(12)8=(a)16(2)(32)10=(40)8=(20)16(3)(75)10=(113)8=(4b)16(4)(-617)10=(176627)8=(fd97)16(5)(-111)10=(177621)8=(ff91)16(6)(2483)10=(4663)8=(963)16(7)(-28654)10=(110022)8=(9012)16(8)(21003)10=(51013)8=(520b)162.6aabb (8)cc (8)abc(7)AN2.7main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1+=4, c2+=4, c3+=4, c4+=4, c5+=4;printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);}2.8main(){int c1,c2;c1=97;c2=98;printf("%c %c",c1,c2);}2.9(1)=2.5(2)=3.52.109,11,9,102.12(1)24 (2)10 (3)60 (4)0 (5)0 (6)0第三章3.4main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c'or %d(ASCII)\n",c1,c1);printf("c2='%c'or %d(ASCII)\n",c2,c2);}3.5575 767.856400,-789.12396267.856400,-789.12396267.86 -789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER, COM3.6a=3 b=7/x=8.5 y=71.82/c1=A c2=a/3.710 20Aa1.5 -3.75 +1.4,67.8/(空3)10(空3)20Aa1.5(空1)-3.75(空1)(随意输入一个数),67.8回车3.8main(){float pi,h,r,l,s,sq,sv,sz;pi=3.1415926;printf("input r,h\n");scanf("%f,%f",&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;sv=4.0/3.0*pi*r*r*r;sz=pi*r*r*h;printf("l=%6.2f\n",l);printf("s=%6.2f\n",s);printf("sq=%6.2f\n",sq);printf("vq=%6.2f\n",sv);printf("vz=%6.2f\n",sz);}3.9main(){float c,f;scanf("%f",&f);c=(5.0/9.0)*(f-32);printf("c=%5.2f\n",c);}3.10#include"stdio.h"main(){char c1,c2;scanf("%c,%c",&c1,&c2);putchar(c1);putchar(c2);printf("\n");printf("%c%c\n",c1,c2);}第四章4.3(1)0 (2)1 (3)1 (4)0 (5)1 4.4main(){int a,b,c;scanf("%d,%d,%d",&a,&b,&c); if(a<b)if(b<c)printf("max=%d\n",c);elseprintf("max=%d\n",b);else if(a<c)printf("max=%d\n",c);elseprintf("max=%d\n",a);}main(){int a,b,c,temp,max;scanf("%d,%d,%d",&a,&b,&c);temp=(a>b)?a:b;max=(c>temp)?c:temp;printf("max=%d",max);}4.5main(){int x,y;scanf("%d",&x);if(x<1)y=x;else if(x<10)y=2*x-1;else y=3*x-11;printf("y=%d",y);}4.6main(){int score,temp,logic;char grade;logic=1;while(logic){scanf("%d",&score);if(score>=0&&score<=100)logic=0; }if(score==100)temp=9;elsetemp=(score-score%10)/10;switch(temp){case 9:grade='A';break;case 8:grade='B';break;case 7:grade='C';break;case 6:grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0:grade='E';}printf("score=%d,grade=%c",score,grade);}4.7main(){long int num;int indiv,ten,hundred,thousand,ten_thousand,place;scanf("%ld",&num);if(num>9999) place=5;else if(num>999) place=4;else if(num>99) place=3;else if(num>9) place=2;else place=1;printf("place=%d\n",place);ten_thousand=num/10000;thousand=(num-ten_thousand*10000)/1000;hundred=(num-ten_thousand*10000-thousand*1000)/100;ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10;switch(place){case 5:printf("%d,%d,%d,%d,%d\n",ten_thousand,thousand,hundred,ten,indiv);printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf("%d,%d,%d,%d\n",thousand,hundred,ten,indiv);printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousand);break;case 3:printf("%d,%d,%d\n",hundred,ten,indiv);printf("%d,%d,%d\n",indiv,ten,hundred);break;case 2:printf("%d,%d\n",ten,indiv);printf("%d,%d\n",indiv,ten);break;case 1:printf("%d\n",indiv);printf("%d\n",indiv);}}4.8main(){long i;float bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf("%ld",&i);if(i<=1e5)bonus=i*0.1;else if(i<=2e5)bonus=bon1+(i-100000)*0.075; else if(i<=4e5)bonus=bon2+(i-200000)*0.05; else if(i<=6e5)bonus=bon4+(i-400000)*0.03; else if(i<=1e6)bonus=bon6+(i-600000)*0.015; else bonus=bon10+(i-1000000)*0.01;printf("bonus=%10.2f",bonus);}main(){long i;float bonus,bon1,bon2,bon4,bon6,bon10;int branch;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf("%ld",&i);branch=i/100000;if(branch>10)branch=10;switch(branch){case 0:bonus=i*0.1;break;case 1:bonus=bon1+(i-100000)*0.075;break; case 2:case 3:bonus=bon2+(i-200000)*0.05;break; case 4:case 5:bonus=bon4+(i-400000)*0.03;break; case 6:case 7case 8:case 9:bonus=bon6+(i-600000)*0.015;break; case 10:bonus=bon10+(i-1000000)*0.01;}printf("bonus=%10.2f",bonus);}4.9main(){int t,a,b,c,d;scanf("%d,%d,%d,%d",&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("%d %d %d %d\n",a,b,c,d);}4.10main(){int h=10;float x,y,x0=2,y0=2,d1,d2,d3,d4;scanf("%f,%f",&x,&y);d1=(x-x0)*(x-x0)+(y-y0)*(y-y0);d2=(x-x0)*(x-x0)+(y+y0)*(y+y0);d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);if(d1>1&&d2>1&&d3>1&&d4>1)h=0;printf("h=%d",h);}第五章循环控制5.1main(){int a,b,num1,num2,temp;scanf("%d,%d",&num1,&num2);if(num1<num2){temp=num1;num1=num2;num2=temp;} a=num1;b=num2;while(b!=0){temp=a%b;a=b;b=temp;}printf("%d\n",a);printf("%d\n",num1*num2/a);}5.2#include"stdio.h"main(){char c;int letters=0,space=0,digit=0,other=0;while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++;else if(c==' ')space++;else if(c>='0'&&c<='9')digit++;else other++;printf("letters=%d\nspace=%d\ndigit=%d\nother=%d\n",letters,space,digit,other); }5.3main(){int a,n,count=1,sn=0,tn=0;scanf("%d,%d",&a,&n);while(count<=n){tn+=a;sn+=tn;a*=10;++count;}printf("a+aa+aaa+...=%d\n",sn);}5.4main(){float n,s=0,t=1;for(n=1;n<=20;n++){t*=n;s+=t;}printf("s=%e\n",s);}5.5main(){int N1=100,N2=50,N3=10;float k;float s1=0,s2=0,s3=0;for(k=1;k<=N1;k++)s1+=k;for(k=1;k<=N2;k++)s2+=k*k;for(k=1;k<=N3;k++)s3+=1/k;printf("s=%8.2f\n",s1+s2+s3);}5.6main(){int i,j,k,n;for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("n=%d\n",n);}5.7#define M 1000main(){int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9; int i,j,n,s;for(j=2;j<=M;j++){n=0;s=j;for(i=1;i<j;i++){if((j%i)==0){n++;s=s-i;switch(n){case 1:k0=i;break;case 2:k1=i;break;case 3:k2=i;break;case 4:k3=i;break;case 5:k4=i;break;case 6:k5=i;break;case 7:k6=i;break;case 8:k7=i;break;case 9:k8=i;break;case 10:k9=i;break;}}}if(s==0){printf("j=%d\n",j);if(n>1)printf("%d,%d",k0,k1);if(n>2)printf(",%d",k2);if(n>3)printf(",%d",k3);if(n>4)printf(",%d",k4);if(n>5)printf(",%d",k5);if(n>6)printf(",%d",k6);if(n>7)printf(",%d",k7);if(n>8)printf(",%d",k8);if(n>9)printf(",%d\n",k9);}}}main(){static int k[10];int i,j,n,s;for(j=2;j<=1000;j++) {n=-1;s=j;for(i=1;i<j;i++){if((j%i)==0){n++;s=s-i;k[n]=i;}}if(s==0){printf("j=%d\n",j);for(i=0;i<n;i++)printf("%d,",k[i]);printf("%d\n",k[n]);}}}5.8main(){int n,t,number=20;float a=2;b=1;s=0;for(n=1;n<=number;n++) {s=s+a/b;t=a,a=a+b,b=t;}printf("s=%9.6f\n",s);}5.9main(){float sn=100.0,hn=sn/2; int n;for(n=2;n<=10;n++) {sn=sn+2*hn;hn=hn/2;}printf("sn=%f\n",sn);printf("hn=%f\n",hn);}5.10main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day--;}printf("x1=%d\n",x1);}5.11#include"math.h"main(){float a,xn0,xn1;scanf("%f",&a);xn0=a/2;xn1=(xn0+a/xn0)/2;do{xn0=xn1;xn1=(xn0+a/xn0)/2;}while(fabs(xn0-xn1)>=1e-5);printf("a=%5.2f\n,xn1=%8.2f\n",a,xn1); }5.12#include"math.h"main(){float x,x0,f,f1;x=1.5;do{x0=x;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);printf("x=%6.2f\n",x);}5.13#include"math.h"main(){float x0,x1,x2,fx0,fx1,fx2;do{scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6;if((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs(fx0)>=1e-5);printf("x0=%6.2f\n",x0);}5.14main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(" ");for(k=0;k<=2*i;k++)printf("*");printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(" ");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}}5.15main(){char i,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++){if(i!=j)for(k='x';k<='z';k++){if(i!=k&&j!=k){if(i!='x'&&k!='x'&&k!='z')printf("\na--%c\tb--%c\tc--%c\n",i,j,k);}}}}第六章数组6.1#include <math.h>#define N 101main(){ int i,j,line,a[N];for (i=2;i<N;i++) a[i]=i; for (i=2;i<sqrt(N);i++)for (j=i+1;j<N;j++){if(a[i]!=0 && a[j]!=0)if (a[j]%a[i]==0)a[j]=0; }printf("\n");for (i=2,line=0;i<N;i++) { if(a[i]!=0){ printf("%5d",a[i]);line++; }if(line==10){ printf("\n");line=0; }}}6.2#define N 10main(){int i,j,min,temp,a[N];for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++){min=i;for(j=i+1;j<N;j++)if(a[min]>a[j])min=j;temp=a[i];a[i]=a[min];a[min]=temp;}for(i=0;i<N;i++)printf("%5d",a[i]);}6.3main(){float a[3][3],sum;int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++){scanf("%f",&sum);a[i][j]=sum;}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%f",sum);}6.4main(){int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number, end,i,j;scanf("%d",&number);end=a[9];if(number>end) a[10]=number;else{for(i=0;i<10;i++){if(a[i]>number){temp1=a[i];a[i]=number;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}for(i=0;i<11;i++)printf("%6d",a[i]);}6.5#define N 5main(){int a[N]={8,6,5,4,1},i,temp;for(i=0;i<N/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}for(i=0;i<N;i++)printf("%4d",a[i]);}6.6#define N 11main(){int i,j,a[N][N];for(i=1;i<N;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<N;i++)for(j=2;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<N;i++){for(j=1;j<=i;j++)printf("%6d",a[i][j]);printf("\n");}}6.7main(){int a[16][16],i,j,k,p,m,n;p=1;while(p==1){scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0; }for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=0;j=n/2+1;a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;}else{if(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;}}for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%3d",a[i][j]);printf("\n");}}6.8#define N 10#define M 10main(){int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; scanf("%d,%d",&n,&m);for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",&a[i][j]);flag2=0;for(i=0;i<n;i++){max=a[i][0];for(j=0;j<m;j++)if(max<a[i][j]){max=a[i][j];maxj=j;}for(k=0,flag1=1;k<n&&flag1;k++)if(max>a[k][maxj])flag1=0;if(flag1){ printf("\na[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if(!flag2) printf("NOT");}6.9#include<stdio.h>#define N 15main(){int i,j,number,top,bott,min,loca,a[N],flag;char c;for(i=0;i<=N;i++)scanf("%d",&a[i]);flag=1;while(flag){scanf("%d",&number);loca=0;top=0;bott=N-1;if((number<a[0])||(number>a[N-1]))loca=-1;while((loca==0)&&(top<=bott)){min=(bott+top)/2;if(number==a[min]){loca=min;printf("number=%d,loca=%d\n",number,loca+1);}else if(number<a[min])bott=min-1;elsetop=min+1;}if(loca==0||loca==-1)printf("%d not in table\n",number);printf("continue Y/N or y/n\n");c=getchar();if(c=='N'||c=='n')flag=0;}}6.10main(){int i,j,uppn,lown,dign,span,othn;char text[3][80];uppn=lown=dign=span=othn=0;for(i=0;i<3;i++){gets(text[i]);for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z')uppn++;else if(text[i][j]>='a'&&text[i][j]<='z')lown++;else if(text[i][j]>='0'&&text[i][j]<='9')dign++;else if(text[i][j]==' ')span++;elseothn++;}}for(i=0;i<3;i++)printf("%s\n",text[i]);printf("uppn=%d\n",uppn);printf("lown=%d\n",lown);printf("dign=%d\n",dign);printf("span=%d\n",span);printf("othn=%d\n",othn);}6.11main(){static char a[5]={'*','*','*','*','*'};int i,j,k;char space=' ';for(i=0;i<=5;i++){printf("\n");for(j=1;j<=3*i;j++)printf("%1c",space);for(k=0;k<=5;k++)printf("%3c",a[k]);}}6.12#include<stdio.h>main(){int i,n;char ch[80],tran[80];gets(ch);i=0;while(ch[i]!='\0'){if((ch[i]>='A')&&(ch[i]<='Z'))tran[i]=26+64-ch[i]+1+64;else if((ch[i]>='a')&&(ch[i]<='z'))tran[i]=26+96-ch[i]+1+96;elsetran[i]=ch[i];i++;}n=i;for(i=0;i<n;i++)putchar(tran[i]);}6.13main(){char s1[80],s2[40];int i=0,j=0;scanf("%s",s1);scanf("%s",s2);while(s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("s=%s\n",s1);}6.14#include<stdio.h>main(){int i,resu;char s1[100],s2[100];gets(s1);gets(s2);i=0;while((s1[i]==s2[i])&&(s1[i]!='\0'))i++;if(s1[i]=='\0'&&s2[i]=='\0')resu=0;elseresu=s1[i]-s2[i];printf("s1=%s,s2=%s,resu=%d\n",s1,s2,resu); }6.15#include"stdio.h"main(){char from[80],to[80];;int i;scanf("%s",from);for(i=0;i<=strlen(from);i++)to[i]=from[i];printf("%s\n",to);}第七章7.1hcf(u,v)int u,v;{int a,b,t,r;if(u>v){t=u;u=v;v=t;}a=u;b=v;while((r=b%a)!=0){b=a;a=r;}return(a);}lcd(u,v,h)int u,v,h;{return(u*v/h);}main(){int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%d\n",h);l=lcd(u,v,h);printf("L.C.D=%d\n",l);}7.2#include"math.h"float x1,x2,disc,p,q;greater_than_zero(a,b)float a,b;{x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}equal_to_zero(a,b)flaot a,b;{x1=x2=-b/(2*a);}smaller_than_zero(a,b)float a,b;{p=-b/(2*a);q=sqrt(-disc)/(2*a);}main(){float a,b,c;scanf("%f,%f,%f",&a,&b,&c);disc=b*b-4*a*c;if(fabs(disc)<=1e-5){equal_to_zero(a,b);printf("x1=%5.2f\tx2=%5.2f\n",x1,x2); }else if(disc>0){greater_than_zero(a,b);printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);}else{smaller_than_zero(a,b);printf("x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",p,q,p,q); }}7.3main(){int number;scanf("%d",&number);if(prime(number))printf("yes");elseprintf("no");}int prime(number)int number;{int flag=1,n;for(n=2;n<number/2&&flag==1;n++)if(number%n==0)flag=0;return(flag);}7.4#define N 3int array[N][N];convert(array)int array[3][3];{int i,j,t;for(i=0;i<N;i++)for(j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}main(){int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&array[i][j]);convert(array);for(i=0;i<N;i++){printf("\n");for(j=0;j<N;j++)printf("%5d",array[i][j]);}}7.5main(){char str[100];scanf("%s",str);inverse(str);printf("%s\n",str);}inverse(str)char str[];{char t;int i,j;for(i=0,j=strlen(str);i<strlen(str)/2;i++,j--) {t=str[i];str[i]=str[j-1];str[j-1]=t;}}7.6char concate(str1,str2,str)char str1[],str2[],str[];{int i,j;for(i=0;str1[i]!='\0';i++)str[i]=str1[i];for(j=0;str2[j]!='\0';j++)str[i+j]=str2[j];str[i+j]='\0';}main(){char s1[100],s2[100],s[100];scanf("%s",s1);scanf("%s",s2);concate(s1,s2,s);printf("\ns=%s",s);}7.7main(){char str[80],c[80];void cpy();gets(str);cpy(str,c);printf("\n%s\n",c);}void cpy(s,c)char s[],c[];{int i,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U'){c[j]=s[i];j++;}c[j]='\0';}7.8main(){char str[80];scanf("%s",str);insert(str);}insert(str)char str[];{int i;for(i=strlen(str);i>0;i--){str[i*2]=str[i];str[i*2-1]=' ';}printf("%s\n",str);}7.9int alph,digit,space,others;main(){char text[80];gets(text);alph=0,digit=0,space=0,others=0;count(text);printf("\nalph=%d,digit=%d,space=%d,others=%d\n",alph,digit,space,others); }count(str)char str[];{int i;for(i=0;str[i]!='\0';i++)if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))alph++;else if(str[i]>='0'&&str[i]<='9')digit++;else if(strcmp(str[i],' ')==0)space++;elseothers++;}7.10int alph(c)char c;{if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return(1);elsereturn(0);}int longest(string)char string[];{int len=0,i,length=0,flag=1,place,point; for(i=0;i<=strlen(string);i++)if(alph(string[i]))if(flag){point=i;flag=0;}elselen++;else{flag=1;if(len>length){length=len;place=point;len=0;}}return(place);}main(){int i;char line[100];gets(line);for(i=longest(line);alph(line[i]);i++) printf("%c",line[i]);printf("\n");}7.11#define N 10char str[N];{int i,flag;for(flag=1;flag==1;){scanf("%s",str);if(strlen(str)>N)printf("input error");elseflag=0;}sort(str);for(i=0;i<N;i++)printf("%c",str[i]);}sort(str)char str[N];{int i,j;char t;for(j=1;j<N;j++)for(i=0;(i<N-j)&&(str[i]!='\0');i++)if(str[i]>str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}}7.12#include<math.h>float solut(a,b,c,d)float a,b,c,d;{float x=1,x0,f,f1;do{x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);return(x);}main(){float a,b,c,d;scanf("%f,%f,%f,%f",&a,&b,&c,&d); printf("x=%10.7f\n",solut(a,b,c,d)); }main(){int x,n;float p();scanf("%d,%d",&n,&x);printf("P%d(%d)=%10.2f\n",n,x,p(n,x));}float p(tn,tx)int tn,tx;{if(tn==0)return(1);else if(tn==1)return(tx);elsereturn(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn); }7.14#define N 10#define M 5float score[N][M];float a_stu[N],a_cor[M];main(){int i,j,r,c;float h;float s_diff();float highest();r=0;c=1;input_stu();avr_stu();avr_cor();printf("\n number class 1 2 3 4 5 avr");for(i=0;i<N;i++){printf("\nNO%2d",i+1);for(j=0;j<M;j++)printf("%8.2f",score[i][j]);printf("%8.2f",a_stu[i]);}printf("\nclassavr");for(j=0;j<M;j++)printf("%8.2f",a_cor[j]);h=highest(&r,&c);printf("\n\n%8.2f %d %d\n",h,r,c);printf("\n %8.2f\n",s_diff());input_stu(){int i,j;float x;for(i=0;i<N;i++){for(j=0;j<M;j++){scanf("%f",&x);score[i][j]=x;}}}avr_stu(){int i,j;float s;for(i=0;i<N;i++){for(j=0,s=0;j<M;j++)s+=score[i][j];a_stu[i]=s/5.0;}}avr_cor(){int i,j;float s;for(j=0;j<M;j++){for(i=0,s=0;i<N;i++)s+=score[i][j];a_cor[j]=s/(float)N; }}float highest(r,c)int *r,*c;{float high;int i,j;high=score[0][0];for(i=0;i<N;i++)for(j=0;j<M;j++)if(score[i][j]>high){high=score[i][j];*r=i+1;*c=j+1;}return(high);}float s_diff()float sumx=0.0,sumxn=0.0;for(i=0;i<N;i++){sumx+=a_stu[i]*a_stu[i];sumxn+=a_stu[i];}return(sumx/N-(sumxn/N)*(sumxn/N)); }7.15#include<stdio.h>#define N 10void input_e(num,name)int num[];char name[N][8];{int i;for(i=0;i<N;i++){scanf("%d",&num[i]);gets(name[i]);}}void sort(num,name)int num[];char name[N][8];{int i,j,min,temp1;char temp2[8];for(i=0;i<N-1;i++){min=i;for(j=i;j<N;j++)if(num[min]>num[j])min=j;temp1=num[i];num[i]=num[min];num[min]=temp1;strcpy(temp2,name[i]);strcpy(name[i],name[min]);strcpy(name[min],temp2);}for(i=0;i<N;i++)printf("\n%5d%10s",num[i],name[i]); }void search(n,num,name)int n,num[];char name[N][8];{int top,bott,min,loca;loca=0;bott=N-1;if((n<num[0])||(n>num[N-1]))loca=-1;while((loca==0)&&(top<=bott)){min=(bott+top)/2;if(n==num[min]){loca=min;printf("number=%d,name=%s\n",n,name[loca]);}else if(n<num[min])bott=min-1;elsetop=min+1;}if(loca==0||loca==-1)printf("number=%d is not in table\n",n);}main(){int num[N],number,flag,c,n;char name[N][8];input_e(num,name);sort(num,name);for(flag=1;flag;){scanf("%d",&number);search(number,num,name);printf("continue?Y/N!");c=getchar();if(c=='N'||c=='n')flag=0;}}7.16#include<stdio.h>#define MAX 1000main(){int c,i,flag,flag1;char t[MAX];i=0;flag=0;flag1=1;while((c=getchar())!='\0'&&i<MAX&&flag1){if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f') {flag=1;t[i++]=c;}else if(flag){t[i]='\0';printf("\nnumber=%d\n",htoi(t));printf("continue?");c=getchar();if(c=='n'||c=='N')flag1=0;else{flag=0;i=0;}}}}htoi(s)char s[];{int i,n;n=0;for(i=0;s[i]!='\0';i++){if(s[i]>='0'&&s[i]<='9')n=n*16+s[i]-'0';if(s[i]>='a'&&s[i]<='f')n=n*16+s[i]-'a'+10;if(s[i]>='A'&&s[i]<='F')n=n*16+s[i]-'A'+10;}return(n);}7.17#include<stdio.h>void convert(n)int n;{int i;if((i=n/10)!=0)convert(i);putchar(n%10+'0');}main(){int number;scanf("%d",&number);if(number<0){putchar('-');number=-number;}convert(number);}7.18main(){int year,month,day;int days;scanf("\n%d,%d,%d",&year,&month,&day);days=sum_day(month,day);if(leap(year)&&(month>=3))days+=1;printf("days=%d\n",days);}static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31} int sum_day(month,day)int month,day;{int i;for(i=1;i<month;i++)day+=day_tab[i];return(day);}int leap(year)int year;{int leap;leap=year%4==0&&year%100!=0||year%400==0;return(leap);}第八章编译预处理8.1#define SW AP(a,b) t=b;b=a;a=tmain(){int a,b,t;scanf("%d,%d",&a,&b);SWAP(a,b);printf("a=%d\tb=%d\n",a,b);}8.2#define SURPLUS(a,b) ((a)%(b))main(){int a,b;scanf("%d,%d",&a,&b);printf("%d",SURPLUS(a,b));}。
1、有以下程序main(){int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;printf("%d\n", *p +*q);}程序运行后的输出结果是(B)A)16 B)10 C)8 D)62、有以下程序:main(){char s[]={"aeiou"},*ps;ps=s; printf("%c\n",*ps+4);}程序运行后的输出结果是(B)A)a B)eC)u D)元素s[4]的地址3、有以下程序main(){char s[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}程序运行后的输出结果是(A)A)15 B)16 C)12 D)594、有以下程序main(){int a[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d ",a[1][i]);}程序运行后的输出结果是(D)A)0 1 2 B)1 2 3C)2 3 4 D)3 4 55、以下程序运行后的输出结果是abcfg #include "string.h"void fun(char *s,int p,int k){ int i;for(i=p;i<k-1;i++)s[i]=s[i+2];}main(){ char s[]="abcdefg"; fun(s,3,strlen(s));puts(s);}6、有以下程序void swap(char *x,char *y){char t;t=*x; *x=*y; *y=t;}main(){char *s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是(C)A)123,abc B)abc,123C)1bc,a23 D)321,cba7、有以下程序# include <string.h>void f(char *s, char *t){ char k;k=*s; *s=*t; *t=k;s++; t--;if (*s) f(s,t);}main(){ char str[10]="abcdefg", *p ;p=str+strlen(str)/2+1;f(p, p-2);printf("%s\n",str);}程序运行后的输出结果是(B)A)abcdefg B)gfedcbaC)gbcdefa D)abedcfg8、有以下程序#include<stdio.h>void fun(char *s){while(*s){if(*s%2==0)printf(“%c”,*s);s++;} }main(){ char a[]={“good”};fun(a);printf(“\n”);}注意:字母a的ASCⅡ码值为97,程序运行后的输出结果是(A)A)d B)goC)god D)good9、有以下程序#include <stdio.h>viod f(int *p,int *q); main(){ int m=1,n=2,*r=&m;f(r,&n);printf(“%d,%d”,m,n);}void f(int *p,int *q){p=p+1;*q=*q+1;}程序运行后输出的结果是(A)A)1,3 B)2,3C)1,4 D)1,210、有以下程序#include <stdio.h>main(){ char *a[ ]={“abcd”, “ef”, “gh”, “ijk”};int i;for(i=0;i<4;i++)printf(“%c”,*a[i]);}程序运行后输出的结果是(A)A)aegi B)dfhkC)abcd D)abcdefghijk (放至教案)1、设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是( D )A)float *p=1024;B)int *p=(float x);C)float p=&x;D)float *p=&x;2、设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( A ) A)*p=*q; B)p=q;C)*p=&n1; D)p=*q;3、若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( C )A)scanf("%d",a,b,c);B)scanf("%d%d%d",a,b,c);C)scanf("%d",p);D)scanf("%d",&p);4、若有以下定义int x[10],*pt=x;则对x数组元素的正确应用是( B )A)*&x[10]B)*(x+3)C)*(pt+10)D)pt+3。
C++程序设计第三版(谭浩强)第十章习题答案10.1 题#includeusing namespace std;class Complex{public:Complex(){real=0;imag=0;}Complex(double r,double i){real=r;imag=i;}double get_real();double get_imag();void display();private:double real;double imag;};double Complex::get_real(){return real;}double Complex::get_imag(){return imag;}void Complex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;} Complex operator + (Complex &c1,Complex &c2){returnComplex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.ge t_imag());}int main(){Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;cout<<"c3=";c3.display();return 0;}10.2 题#includeusing namespace std;class Complex{public:Complex(){real=0;imag=0;}Complex(double r,double i){real=r;imag=i;} Complex operator+(Complex &c2); Complex operator-(Complex &c2); Complex operator*(Complex &c2); Complex operator/(Complex &c2);void display();private:double real;double imag;};Complex Complex::operator+(Complex &c2) {Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;return c;}Complex Complex::operator-(Complex &c2) {Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;}Complex Complex::operator*(Complex &c2) {Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=imag*c2.real+real*c2.imag;return c;}Complex Complex::operator/(Complex &c2) {Complex c;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.i mag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.i mag*c2.imag);return c;}void Complex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;}int main(){Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;cout<<"c1+c2=";c3.display();c3=c1-c2;cout<<"c1-c2=";c3.display();c3=c1*c2;cout<<"c1*c2=";c3.display();c3=c1/c2;cout<<"c1/c2=";c3.display();}10.3 题#include //用 VC++时改为∶ #includeusing namespace std; //用 VC++时为取消此行class Complex{public:Complex(){real=0;imag=0;}Complex(double r,double i){real=r;imag=i;} Complex operator+(Complex &c2); Complex operator+(int &i);friend Complex operator+(int&,Complex &); void display();private:double real;double imag;};Complex Complex::operator+(Complex &c) {return Complex(real+c.real,imag+c.imag);} Complex Complex::operator+(int &i) {return Complex(real+i,imag);}void Complex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;} Complex operator+(int &i,Complex &c) {return Complex(i+c.real,c.imag);}int main(){Complex c1(3,4),c2(5,-10),c3;int i=5;cout<<"c1+c2=";c3.display();c3=i+c1;cout<<"i+c1=";c3.display();c3=c1+i;cout<<"c1+i=";c3.display();return 0;}10.4 题#includeusing namespace std;class Matrix //定义 Matrix 类{public:Matrix(); //默认构造函数friend Matrix operator+(Matrix &,Matrix &); //重载运算符“+”void input(); //输入数据函数void display(); //输出数据函</real<<","<<imag<<"i)"<<endl;}</real<<","<<imag<<"i)"<<endl;}</real<<","<<imag<<"i)"<<endl;}。
C程序设计(第三版)习题答案(10章) 谭浩强著第十章指针10.1int swap(int*p1,int*p2){int p;p=*p1;*p1=*p2;*p2=p;}void main(){int n1,n2,n3;int*q1,*q2,*q3;scanf("%d %d %d",&n1,&n2,&n3);q1=&n1;q2=&n2;q3=&n3;if(n1>n2) swap(q1,q2);if(n1>n3) swap(q1,q3);if(n2>n3) swap(q2,q3);printf("%d %d %d\n",n1,n2,n3);}10.2main(){char *str1[20],*str2[20],*str3[20];char swap();scanf("%s",str1);scanf("%s",str2);scanf("%s",str3);if(strcmp(str1,str2)>0)swap(str1,str2); if(strcmp(str1,str3)>0)swap(str1,str3); if(strcmp(str2,str3)>0)swap(str2,str3); printf("%s\n%s\n%s\n",str1,str2,str3); }char swap(p1,p2)char *p1,*p2;{char *p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}10.3main(){int number[10];input(number);max_min_value(number);output(number);}input(number)int number[10];{int i;for(i=0;i<10;i++)scanf("%d",&number[i]); }max_min_value(number)int number[10];{int *max,*min;int *p,*end;end=number+10;max=min=number;for(p=number+1;p<end;p++)if(*p>*max)max=p;else if(*p<*min)min=p;*p=number[0];number[0]=*min;*min=*p;*p=number[9];number[9]=*max;*max=*p;return;}output(number)int number[10];{int *p;for(p=number;p<number+9;p++) printf("%d,",*p);printf("%d\n",*p);}10.4main(){int number[20],n,m,i;scanf("%d",&n);scanf("%d",&m);for(i=0;i<n:i++)scanf("%d",&number[i]); move(number,n,m);for(i=0;i<n;i++)printf("%8d",number[i]); }move(array,n,m)int array[20],n,m;{int *p,end;end=*(array+n-1);for(p=array+n-1;p>array;p--) *p=*(p-1);*array=end;m--;if(m>0)move(array,n,m);}10.5#define nmax 50main(){int i,k,m,n,num[nmax],*p; scanf("%d",&n);p=num;for(i=0;i<n;i++)*(p+i)=i+1;i=k=m=0;while(m<n-1){if(*(p+i)!=0)k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(*p==0)p++;printf("%d",*p);}10.6main(){int len;char *str[20];scanf("%s",str);len=length(str);printf("\nlen=%d\n",len); }length(p)char *p;{int n=0;while(*p!='\0'){n++;p++;}return(n);}10.7main(){int m;char *str1[20],*str2[20]; scanf("%s",str1);scanf("%d",&m);if(strlen(str1)<m)printf("error");else{copystr(str1,str2,m); printf("%s",str2);}}copystr(p1,p2,m)char *p1,*p2;int m;{int n=0;while(n<m-1){n++;p1++;}while(*p1!='\0'){*p2=*p1;p1++;p2++;}*p2='\0';}10.8#include"stdio.h"main(){int cle=0,sle=0,di=0,wsp=0,ot=0,i; char *p,s[20];for(i=0;i<20;i++)s[i]=0;i=0;while((s[i]=getchar())!='\n')i++; p=s;while(*p!='\n'){if(*p>='a'&&*p<='z')++sle;else if(*p>='A'&&*p<='Z')++cle;else if(*p==' ')++wsp;else if(*p>='0'&&*p<='9')++di;else++ot;p++;}printf("sle=%d,cle=%d,wsp=%d,di=%d,ot=%d\n",sle,cle,wsp,di,ot); }10.9main(){int a[3][3],*p,i;for(i=0;i<3;i++)scanf("%d,%d,%d",a[i][0],a[i][1],a[i][2]);p=a;move(p);for(i=0;i<3;i++)printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);}move(pointer)int *pointer;{int i,j,t;for(i=0;i<2;i++)for(j=i+1;j<3;j++){t=*(pointer+3*i+j);*(pointer+3*i+j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;}}10.10main(){int a[5][5],*p,i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);p=a;change(p);for(i=0;i<5;i++){printf("\n");for(j=0;j<5;j++)printf("%8d",a[i][j]); }}change(p)int *p;{int i,j,change;int *pmax,*pmin;pmax=p;pmin=p;for(i=0;i<5;i++)for(j=0;j<5;j++){if(*pmax<*(p+5*i+j))pmax=p+5*i+j;if(*pmin>*(p+5*i+j))pmin=p+5*i+j;}change=*(p+12);*(p+12)=*pmax;*pmax=change;change=*p;*p=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+4);*(p+4)=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j))) pmin=p+5*i+j;change=*(p+20);*(p+20)=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20)) &&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+24);*(p+24)=*pmin;*pmin=change;}10.11main(){int i;char *p,str[10][10];for(i=0;i<10;i++)scanf("%s",str[i]);p=str;sort(p);for(i=0;i<10;i++)printf("%s\n",str[i]);}sort(p)char *p;{int i,j;char s[10],*smax,*smin;for(i=0;i<10;i++){smax=p+10*i;for(j=i+1;j<10;j++){smin=p+10*j;if(strcmp(smax,smin)>0) {strcpy(s,smin);strcpy(smin,smax); strcpy(smax,s);}}}}10.12#define MAX 20main(){int i;char *pstr[10],str[10][MAX]; for(i=0;i<10;i++)pstr[i]=str[i];for(i=0;i<10;i++)scanf("%s",pstr[i]);sort(pstr);for(i=0;i<10;i++)printf("%s\n",pstr[i]);}sort(pstr)char *pstr[10];{int i,j;char *p;for(i=0;i<10;i++){for(j=i+1;j<10;j++){if(strcmp(*(pstr+i),*(pstr+j))>0) {p=*(pstr+i);*(pstr+i)=*(pstr+j);*(pstr+j)=p;}}}}10.13#include"math.h"main(){int n=20;float a,b,a1,b1,a2,b2,c,(*p)(),jiff(); scanf("%f,%f",&a,&b);scanf("%f,%f",&a1,&b1);scanf("%f,%f",&a2,&b2);p=sin;c=jiff(a,b,n,p);printf("sin=%f\n",c);p=cos;c=jiff(a1,b1,n,p);printf("cos=%f\n",c);p=exp;c=jiff(a2,b2,n,p);printf("exp=%f\n",c);}float jiff(a,b,n,p)float a,b,(*p)();int n;{int i;float x,f,h,area;h=(b-a)/n;x=a;area=0;for(i=1;i<=n;i++){x=x+h;area=area+(*p)(x)*h; }return(area);}10.14{int i,n,num[20];char *p;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&num[i]); p=num;sort(p,n);for(i=0;i<n;i++)printf("%8d",num[i]); }sort(p,m)char *p;int m;{int i;char change,*p1,*p2;for(i=0;i<m/2;i++){p1=p+i;p2=p+(m-1-i);change=*p1;*p1=*p2;*p2=change;}}main(){int i,j,*pnum,num[4];float score[4][5],aver[4],*psco,*pave; char course[5][10],*pcou;pcou=course[0];for(i=0;i<5;i++)scanf("%s",pcou+10*i);printf("number");for(i=0;i<5;i++)printf(",%s",pcou+10*i);printf("\n");psco=score;pnum=num;for(i=0;i<4;i++){scanf("%d",pnum+i);for(j=0;j<5;j++)scanf(",%f",psco+5*i+j);}pave=aver;printf("\n");avsco(psco,pave);avcour1(pcou,psco);printf("\n");fali2(pcou,pnum,psco,pave); printf("\n");good(pcou,pnum,psco,pave); }avsco(psco,pave)float *psco,*pave;{int i,j;float sum,average;for(i=0;i<4;i++){sum=0;for(j=0;j<5;j+)sum+=(*(psco+5*i+j)); average=sum/5;*(pave+i)=average;}}avcour1(pcou,psco)char *pcou;float *psco;{int i;float sum,average1;sum=0;for(i=0;i<4;i++)sum+=(*(psco+5*i))average1=sum/4;printf("%s %5.2f\n",pcou,average1); }fali2(pcou,pnum,psco,pave)char *pcou;int *pnum;float *psco,*pave;{int i,j,k,label;printf("\nnumber\n");for(i=0;i<5;i++)printf("%-8s",pcou+10*i);printf("\naverage\n");for(i=0;i<4;i++){label=0;for(j=0;j<5;j++)if(*(psco+5*i+j)<60.0)label++;if(label>=2){printf("%-8d",*(pnum+i));for(k=0;k<5;k++)printf("%-8.2f",*(psco+5*i+k)); printf("%-8.2f",*(pave+i));}}}good(pcou,pnum,psco,pave)char *pcou;int *pnum;float *psco,*pave;{int i,j,k,label;printf("number");for(i=0;i<5;i++)printf("%-8s",pcou+10*i);printf("average");for(i=0;i<4;i++){label=0;for(j=0;j<5;j++)if(*(psco+5*i+j)>=85.0)label++;if((label>=5)||(*(pave+i)>=90)){printf("%-8d",*(pnum+i));for(k=0;k<5;k++)printf("%-8.2f",*(psco+5*i+k)); printf("%-8.2f",*(pave+i));}}}10.16#include"stdio.h"main(){char str[50],*pstr;int i,j,k,m,e10,digit,ndigit,a[10],*pa;gets(str);pstr=str;pa=a;ndigit=0;i=j=0;while(*(pstr+i)!='\0'){if((*(pstr+i)>='0')&&(*(pstr+i)<='9')) j++;else{if(j>0){digit=*(pstr+i-1)-48;k=1;while(k<j){e10=1;for(m=1;m<=k;m++)e10=e10*10;digit+=(*(pstr+i-1-k)-48)*e10; k++;}*pa=digit;ndigit++;pa++;j=0;}}i++;}if(j>0){digit=*(pstr+i-1)-48;k=1;while(k<j){e10=1;for(m=1;m<=k;m++)e10=e10*10;digit+=(*(pstr+i-1-k)-48)*e10; k++;}*pa=digit;ndigit++;j=0;}printf("ndigit=%d\n",ndigit);j=0;pa=a;for(j=0;j<ndigit;j++)printf("%d",*(pa+j));}10.17main(){int m;char str1[20],str2[20],*p1,*p2;scanf("%s",str1);scanf("%s",str2);p1=str1;p2=str2;m=strcmp(p1,p2);printf("%d\n",m);}strcmp(p1,p2)char *p1,*p2;{int i=0;while(*(p1+i)==*(p2+i))if(*(p+i++)=='\0')return(0);return(*(p1+i)-*(p2+i));}10.18main(){static char *mname[13]={"illeagl","January","February","March", "April","May","June","July","August","September","October", "November","December"};int n;scanf("%d",&n);if((n>=1)&&(n<=12))printf("%s\n",*(mname+n)); elseprintf("error");}10.20main(){int i;char **p,*pstr[5],str[5][10]; for(i=0;i<5;i++)pstr[i]=str[i];for(i=0;i<5;i++)scanf("%s",pstr[i]);p=pstr;sort(p);for(i=0;i<5;i++)printf("%s\n",pstr[i]);}sort(p)char **P;{int i,j;char *pchange;for(i=0;i<5;i++){for(j=i+1;j<5;j++){if(strcmp(*(p+i),*(p+j))>0) {pchange=*(p+i);*(p+i)=*(p+j);*(p+j)=pchange;}}}}10.21main(){int i,n,digit[20],**p,*pstr[20]; scanf("%d",&n);for(i=0;i<n;i++)pstr[i]=&digit[i];for(i=0;i<n;i++)scanf("%d",pstr[i]);p=pstr;sort(p,n);for(i=0;i<n;i++)printf("%d ",*pstr[i]);}sort(p,n)int **p,n;{int i,j,*pchange;for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(**(p+i)>**(p+j)) {pchange=*(p+i); *(p+i)=*(p+j); *(p+j)=pchange; }}}}。
第1章程序设计和C语言 1 1.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句59 3.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
c语言程序设计谭浩强课后习题答案1. 一个C语言程序是由()。
[单选题] *一个主程序和若干子程序组成函数组成(正确答案)若干过程组成若干子程序组成2. 一个C程序的执行是从()。
[单选题] *本程序的main函数开始,到main函数结束(正确答案)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束本程序的main函数开始,到本程序文件的最后一个函数结束本程序文件的第一个函数开始,到本程序main函数结束3. 同时定义相同类型的多个变量要使用()。
[单选题] *句号分号逗号(正确答案)冒号4. 标准C语言程序编译生成的文件后缀为()。
[单选题] *.c.cpp.obj(正确答案).exe5. 下面的注释那个写法是正确的()。
[单选题] */*this is a comment*\/*this is a comment/* it is error*//*this is a comment*/ (正确答案)/*this one seems like a comment doesn’t it6. 以下叙述中正确的是()。
[单选题] *用C程序实现的算法必须要有输入和输出操作用C程序实现的算法可以没有输出但必须要有输入用C程序实现的算法可以没有输入但必须要有输出(正确答案)用C程序实现的算法可以既没有输入也没有输出7. C语言中3种基本结构是()。
[单选题] *顺序结构、选择结构、循环结构(正确答案)if、switch、breakfor、while、do-whileif、for、continue8. 以下叙述中错误的是()。
[单选题] *用户所定义的标识符允许使用关键字(正确答案)用户所定义的标识符应尽量做到“见名知意”用户所定义的标识符必须以字母或下划线开头用户定义的标识符中,大、小写字母代表不同标识9. 以下不能定义为用户标识符的是()。
[单选题] *Main_0_intsizeof(正确答案)10. 以下选项中合法的用户标识符是()。
第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
10.1#include <stdio.h>#include <stdlib.h>int swap(int *p1,int *p2){int temp;if (*p1>*p2) temp=*p1,*p1=*p2,*p2=temp;return 0;}int exchange(int *a,int *b,int *c){if (*a>*b) swap(a,b);if (*a>*c) swap(a,c);if (*b>*c) swap(b,c);return 0;}int main(){printf("习题10.1 输入3个整数,从小到大输出.\n===================\n");int a,b,c,*p1,*p2,*p3;printf("请输入3个整数(空格隔开):\n");scanf("%d%d%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);printf("输出为: %d %d %d",a,b,c) ;return 0;}10.2#include "stdio.h"void min(char *p1[100],char *p2[100]){char t[100];if (strcmp(p1,p2)>0){strcpy(t,p1);strcpy(p1,p2);strcpy(p2,t);}}void main(){printf("习题10.2\n=================\n");printf("请输入三个字符串(空格隔开):\n");char * a[100],* b[100],* c[100];scanf("%s%s%s",a,b,c);min(a,b);min(a,c);min(b,c);printf("从小到大:\n");printf("%s\n%s\n%s\n",a,b,c);}10.3#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define N 5int a[N],i,j,t;int *p1,*p2;int input(){printf("请输入10个整数:\n");for (i=0;i<N;i++){scanf("%d",&a[i]);}return 0;}int deal(){p1=a;p2=a;for (i=0;i<N-1;i++){for (j=0;j<N-1-i;j++){if (a[i]>a[j+1]) p1=&(a[j+1]);}}t=a[0];a[0]=*p1;*p1=t;for (i=0;i<N-1;i++){for (j=0;j<N-1-i;j++){if (a[i]<a[j+1]) p2=&(a[j+1]);}}t=a[N-1];a[N-1]=*p2;*p2=t;return 0;}int output(){printf("处理后:\n");for (i=0;i<N;i++){printf("%d ",a[i]);}return 0;}int main(){printf("习题10.3 对换最小的数和最大的数\n===================\n");input();deal();output();return 0;}10.4#include <stdio.h>#include <stdlib.h>#define Nvoid move(int a[],int n,int m){int *p,a_end;a_end=a[n-1];for(p=a+n-1;p>a;p--){*p=*(p-1);}a[0]=a_end;m--;if (m>0) move(a,n,m) ;}int main(){printf("习题10.4 移动整数\n===================\n");int i,n,m;printf("请输入数字个数:\n");scanf("%d",&n);int a[n];printf("请输入%d个数字:\n",n);for (i=0;i<n;i++){scanf("%d",&a[i]);}printf("请输入要移动个数:\n");scanf("%d",&m);move(a,n,m);printf("输出为:\n");for (i=0;i<n;i++){printf(" %d",a[i]);}return 0;}10.5#include <stdio.h>#include <stdlib.h>int remain(int a[],int n){int i,k=1;int m=n;while (m>1){for (i=0;i<n;i++){if(a[i]!=0) k++;if (k==4){a[i]=0;m--;k=1;}}}int *p=a;for (i=0;i<n;i++){if (*p==0) p++;}printf("是%d号留下",*p);}int main(){printf("习题10.5 n个人围圈,最后留下的是几号\n===================\n");printf("请输入人的个数n:\n");int i,n;scanf("%d",&n);int a[n];for (i=0;i<n;i++){a[i]=i+1;}remain(a,n);return 0;}10.6#include <stdio.h>#include <stdlib.h>int length(char a[]){char *p;int i=0;p=a;while(*p!='\0') {p++;i++;}return i;}int main(){printf("习题10.6 \n=========== \n");printf("请输入字符串: \n");char a[80];scanf("%s",a);printf("长度为: \n%d",length(a));return 0;}10.7#include<stdio.h>#include<string.h>void copy(char a[],int m,int n){int i;char *p,b[80];p=&a[m-1];for(i=0;i<n-m;i++){b[i]=*p++;}b[i]='\0';printf("复制后的字符串:\n%s",b);}void main(){printf("习题10.7 将n个字符的字符串的第m个字符复制给另一个字符串\n===================\n");char a[80];int m,n;printf("请输入字符串:\n");scanf("%s",a);printf("请输入第m个字符:\n");scanf("%d",&m);n=sizeof(a);copy(a,m,n);}10.8#include <stdio.h>#include <stdlib.h>int main(){printf("习题10.8 输入一行文字,找出其中大写字母,小写字母,空格,数字,以及其他字符各有多少个\n===================\n");printf("请输入一行文字:\n");char a[80],*p;p=&a[0];int capital=0,lowercase=0,space=0,number=0,other=0;while((*p=getchar())!='\n'){if(*p>='A'&&*p<='Z') capital++;else if(*p>='a'&&*p<='z') lowercase++;else if(*p==' ') space++;else if(*p<='9'&&*p>='0') number++;else other++;p++;}printf("该行文字有大写字母%d个\n",capital);printf("该行文字有小写字母%d个\n",lowercase);printf("该行文字有空格%d个\n",space);printf("该行文字有数字%d个\n",number);printf("该行文字有其他字符%d个\n",other);return 0;}10.9#include <stdio.h>#include <stdlib.h>void transpose(int a[][]){int (*p)[3],i,j;p=a;printf("转置后的矩阵为:\n");for (j=0;j<3;j++){for(i=0;i<3;i++)printf(" %d",*(*(p+i)+j));printf("\n");}}int main(){printf("习题10.9 写一个函数,将一个3*3矩阵转置.\n===================\n");int a[3][3]={1,2,3,4,5,6,7,8,9},i,j;printf("转置前的矩阵为:\n");for (i=0;i<3;i++){for (j=0;j<3;j++)printf(" %d",a[i][j]);printf("\n");}transpose(a);return 0;}10.10#include <stdio.h>#include <stdlib.h>void change(int a[][]){int i,j,temp;int *pm1,*pm2,*pm3,*pm4,*pmax,*p;p=a;pmax=(int*)malloc(2);pm1=(int*)malloc(2);pm2=(int*)malloc(2);pm3=(int*)malloc(2);pm4=(int*)malloc(2);for (i=0;i<5;i++){for (j=0;j<5;j++)if (*(p+i*5+j)>*pmax) pmax=p+i*5+j;}temp=*(p+2*5+2);*(p+2*5+2)=*pmax;*pmax=temp;for (i=0;i<5;i++){for (j=0;j<5;j++)if (*(p+i*5+j)<*pm1) pm1=p+i*5+j;}for (i=0;i<5;i++){for (j=0;j<5;j++)if (*(p+i*5+j)<*pm2&&*(p+i*5+j)>*pm1) pm2=p+i*5+j;}for (i=0;i<5;i++){for (j=0;j<5;j++)if (*(p+i*5+j)<*pm3&&*(p+i*5+j)>*pm2) pm3=p+i*5+j;}for (i=0;i<5;i++){for (j=0;j<5;j++)if (*(p+i*5+j)<*pm4&&*(p+i*5+j)>*pm3) pm4=p+i*5+j;}temp=*(p+0+0);*(p+0+0)=*pm1;*pm1=temp;temp=*(p+4);*(p+4)=*pm2;*pm2=temp;temp=*(p+20);*(p+20)=*pm3;*pm3=temp;temp=*(p+24);*(p+24)=*pm4;*pm4=temp;}int main(){printf("习题10.10 将5*5矩阵中的最大值放到中间,次小的4个值按序放到四个角.\n===================\n");int a[5][5]={25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};printf("转换前:\n");int i,j;for (i=0;i<5;i++){for (j=0;j<5;j++)printf("%3d",a[i][j]);printf("\n");}change(a);printf("转换后:\n");for (i=0;i<5;i++){for (j=0;j<5;j++)printf("%3d",a[i][j]);printf("\n");}return 0;}10.11#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 10#define M 10void cmp(char *p){char temp[M],*smin,*smax;int i,j;for (i=0;i<N;i++){smax=p+i*M;for (j=i+1;j<N;j++){smin=p+j*M;if (strcmp(smax,smin)>0){strcpy(temp,smin);strcpy(smin,smax);strcpy(smax,temp);}}}}int main(){printf("习题10.11 主函数输入10个等长字符串,用另一个函数对它们排序.然后在主函数输出排序后字符串\n=============\n");char a[N][M],(*p)[M];p=a;int i;printf("请输入等长字符串:\n");for (i=0;i<N;i++){scanf("%s",&a[i]);}printf("比较前字符串:\n");for (i=0;i<N;i++){printf("%s\n",*(p+i));}cmp(p);printf("比较后字符串:\n");for (i=0;i<N;i++){printf("%s\n",*(p+i));}return 0;}10.12#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 2#define M 4void cmp(char *p[]){char temp[M],*smin,*smax;int i,j;for (i=0;i<N;i++){smax=p[i];for (j=i+1;j<N;j++){smin=p[j];if (strcmp(smax,smin)>0){strcpy(temp,smin);strcpy(smin,smax);strcpy(smax,temp);}}}}int main(){printf("习题10.12 主函数输入10个等长字符串,用另一个函数对它们排序.然后在主函数输出排序后字符串(利用指针数组)\n=============\n");char a[N][M],*p[N];int i;printf("请输入等长字符串:\n");for (i=0;i<N;i++){scanf("%s",&a[i]);}for (i=0;i<N;i++){p[i]=a[i];}printf("比较前字符串:\n");for (i=0;i<N;i++){printf("%s\n",p[i]);}cmp(p);printf("比较后字符串:\n");for (i=0;i<N;i++){printf("%s\n",p[i]);}return 0;}10.14#include <stdio.h>#include <stdlib.h>int main(){printf("习题10.14, 将N个数按输入时的逆序排列.\n=============\n");printf("请输入数字个数N:\n");int n,i,*p;scanf("%d",&n);int a[n];p=a;printf("请输入这%d个数N:\n",n);for(i=0;i<n;i++){scanf("%d",p++);}printf("您的输入为:\n");for(i=0;i<n;i++){printf("%d ",a[i]);}printf("\n逆序输出为:\n");for(i=0;i<n;i++){printf("%d ",*--p);}return 0;}10.15#include <stdio.h>#include <stdlib.h>#define M 2#define N 2int c,i,j;struct student{int number;int score[M];int average;}stu[N];void fir_ave(struct student* p){float total=0;for (i=0;i<N;i++,p++){total+=p->score[0];}printf("第一门课程的平均分为%f:\n",total/N);}void find_fail(struct student* p){int count=0,flag=1;for (i=0;i<N;i++,p++){for (j=0;j<M;j++){if (p->score[j]<60) count++;}if (count>=2){printf("第%d号学生有2科以上不及格,他的所有课程成绩为:\n",i+1);for (j=0;j<M;j++){printf("第%d门:%d ",j+1,stu[i].score[j]);flag=0;}count=0;}count=0;}if (flag) printf("\n没找到!");}void find_high(struct student* p){int fla=1,flag1=0,flag2=0;float total=0;for (i=0;i<N;i++,p++){total=0;for (j=0;j<M;j++){total+=p->score[j];p->average=total/M;}}for (i=0;i<N;i++,p--);for (i=0;i<N;i++,p++){flag1=1;for (j=0;j<M;j++){if (p->score[j]<=85) flag1=0;}if (p->average>90) flag2=1;else flag2=0;if (flag1||flag2){printf("\n第%d号同学符合要求!他的所有课程成绩为:\n",i+1);fla=0;for (j=0;j<M;j++){printf("第%d门:%d ",j+1,stu[i].score[j]);}}}if (fla) printf("没找到!\n");}int main(){printf("习题10.15 有一个班四个学生5门课,编3个函数实现:\n1.求第一门课程的平均分\n2.找出有2门以上课程不及格的学生,输出学号和全部课程\n3.找出平均成绩在90分以上或者全部成绩在85分以上的学生\n=====================================\n");printf("请输入四个学生分数:\n");struct student *p;p=stu;for (i=0;i<N;i++){stu[i].number=i+1;}for (i=0;i<N;i++){for (j=0;j<M;j++){printf("请输入第%d个学生的第%d门分数:___",i+1,j+1);scanf("%d",&stu[i].score[j]);}}while (1)printf("\n请选择:\n1.求第一门课程的平均分\n2.找出有2门以上课程不及格的学生,输出学号和全部课程\n3.找出平均成绩在90分以上或者全部成绩在85分以上的学生\n4.退出.\n");scanf("%d",&c);if (c==1) fir_ave(p);if (c==2) find_fail(p);if (c==3) find_high(p);if (c==4) break;}return 0;}10.16#include <stdio.h>#include <stdlib.h>int main(){printf("习题10.16 输入如一个字符串,将连续的数字作为一个整数,统计数量并输出\n================================\n");int i=0,j=0,flag=0;char a[80];int b[10]={0};while ((a[i]=getchar())!='\n'){if (a[i]<='9'&&a[i]>='0'){b[j]=b[j]*10+a[i]-48;flag=1;i++;continue;}if (flag){i++;j++;flag=0;}}printf("\n共计%d个数字,他们是:\n",j);for(i=0;i<j;i++){printf("%d,",b[i]);return 0;}10.17#include <stdio.h>#include <stdlib.h>int strcmp(char *p1 ,char *p2){while (*p1!='\0'||*p2!='\0'){if(*p1==*p2){p1++;p2++;}if (*p1>*p2||*p1<*p2){return *p1-*p2;}}return 0;}int main(){printf("习题10.17 写一个strcmp函数\n===============\n");printf("请输入两个字符串:\n");char a[80],b[80],*p1,*p2;p1=a;p2=b;scanf("%s%s",a,b);printf("二者差值为:%d",strcmp(p1,p2));return 0;}10.18#include <stdio.h>#include <stdlib.h>int main(){printf("习题10.18,输入月份,输出英文月名.(用指针数组)\n===================\n");printf("请输入月份:\n");int i,m;char *p[12];charb[12][12]={"January","February","March","April","May","June","July","August","September","O ctober","November","December"};for(i=0;i<12;i++){p[i]=b[i];}scanf("%d",&m);printf("月份:%s",p[m-1]);return 0;}10.19#include <stdio.h>#include <stdlib.h>char allocate[1000];char *allocp=allocate;char* alloc(int n){if(n<1000){allocp+=n;return allocp-n;}elsereturn 0;}int freE(char *p){allocp=p;}int main(){printf("习题10.19 编写函数alloc,和free;\n");return 0;}10.20#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 5int main(){printf("习题10.20 对5个字符串排序(指向指针的指针)\n===================================\n");printf("请输入5个字符串:\n");char **ps,*p[N],a[N][20],temp[20];int i,j;for (i=0;i<N;i++){p[i]=a[i];}ps=p;for (i=0;i<N;i++){scanf("%s",a[i]);}for (i=0;i<N-1;i++){for (j=0;j<N-1-i;j++){if (strcmp(*(ps+j),*(ps+j+1))>0){strcpy(temp,*(ps+j));strcpy(*(ps+j),*(ps+j+1));strcpy(*(ps+j+1),temp);}}}for (i=0;i<N;i++){printf("%s\n",p[i]);}return 0;}10.21#include <stdio.h>#include <stdlib.h>void sort(int **p ,int n){int i,j,t;for (i=0;i<n-1;i++){for (j=0;j<n-1-i;j++){if (**(p+j)>**(p+j+1)){t=**(p+j);**(p+j)=**(p+j+1);**(p+j+1)=t;}}}}int main(){printf("习题10.21 对N个整数排序并输出.(指针的指针)\n============================\n");printf("请输入整数个数N:\n");int n,i,**p;scanf("%d",&n);int a[n],*pi[n];printf("请输入整数:\n");for (i=0;i<n;i++){scanf("%d",&a[i]);}for (i=0;i<n;i++){pi[i]=&a[i];}p=pi;sort(p,n);printf("排序后:\n");for (i=0;i<n;i++){printf(" %d",*pi[i]);}return 0;。