函数mystrcat
- 格式:doc
- 大小:91.50 KB
- 文档页数:3
50道经典编程题考试1.写出32个关键字并简述其含义。
2.分类写出你所知道的所有运算符以及举例说明。
3.写出运算符优先级的口诀和结合性。
4.输入2名学员的信息,包括姓名、年龄,输出到控制台。
5.从键盘上输入矩形的长度和宽度,输出面积。
6.打印1到100之间所有奇数的和。
7.用一个for循环打印九九乘法表。
8.写一个函数,打印任意两个整数之间的素数。
9.写一个函数,求出任意一个整数的阶乘。
10.写一个函数,交换两个整数的大小。
11.编写一个函数将32位整型参数分解为一个4字节数组,要求高位在前,低位在后,比如将0XOOFEOOAC分解为数组OXOO,OXFE,OXOO,OXAC(注释:OX不是值,表示16进制数) 12.一群人围成一圈,123的报数,报3者出列,求最后一个人。
13.针对test.h test.c 编写一个makefile文件,要求:尽可能简洁。
14.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的3个用户,用户名的形式为stdxx,其中xx从01到03。
15.用至少5种方法输出数组元素! 16.判断一个字符串是否是回文串! 17.实现一个函数,把一个字符串中的字符从小写转为大写。
18.完成自己的strlen 函数 int mystrlen(char *p){ int n=0; while(*p!='\\0');{ p++; n++; } return n;} 19.完成自己的strcpy 函数 void mystrcpy(char* t,char*s){ while(*s)*t++=*s++; * t='\\0'; } 20.完成自己的strcat 函数 void mystrcat(char* t,char* s){ while(*t)t++; while(*s)*t++=*s++; *t='\\0'; } 21.完成自己的strcmp函数 int mystrcmp(char* s1,char*s2){ while(*s!='\\0'||*s2!='\\0'){ if(*s1-*s2>0)return 1;else if(*s1-*s2 typedef struct{ int y; int m; int d; }Date;int isLeap(int y){ return y@0==0||(y%4==0&&y 0!=0); }int daysOfMonth(int y,int m){ intdays[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if(2==m)returndays[1]+isLeap(y); else return days[m-1]; }int daysOfDate(Date* p){ int y,m,days=0; for (y = 1; y y; ++y){ days+=365+isLeap(y);} for (m = 1; m m; ++m) { days+=daysOfMonth(p->y,m); } days+=p->d; return days; }int main(){ Date d1,d2; printf(\ scanf(\ scanf(\ int days1 = daysOfDate( int days2 = daysOfDate( printf(\ return 0; } 28.一个数组table,用一个宏定义,求出数组的元素个数!29.对整型数组进行冒泡排序。
MySQL⾼级查询函数(单⾏函数)函数的分类:1,单⾏函数:对每⼀条记录输⼊值进⾏计算,得到相应的计算结果,返回给⽤户,也就是说,每条记录作为⼀个输⼊参数,经过函数计算得到每条记录的计算结果。
2,多⾏函数:对多条记录输⼊值进⾏计算,得到多条记录对应的单个结果。
单⾏函数:①:字符串函数(⽤户处理单⾏的字符数据,⽐如⼤⼩写转换,字符串截取,拼装等)a.LOWER/UPPER(LOWER(str):返回字符串str变为⼩写字母的字符串.UPPER(str):返回字符串str变为⼤写字母的字符串) SELECT UPPER(name) FROM student; //全部⼤写SELECT LOWER(name) FROM student; //全部⼩写b.CONCAT: CONCAT(str1,str2,...): 1,返回结果为连接参数产⽣的字符串。
2,如有任何⼀个参数为NULL ,则返回值为 NULL 3,允许有⼀个或多个参数SELECT name,age, CONCAT(name,'-',age) FROM student;运⾏的结果为:c.INSERT:把指定(位置,长度)的⼦字符串替换成⽬标字符串 格式:INSERT(str,pos,len,newstr) 参数:str:(源字符串) pos:(开始插⼊的位置,索引从1开始) len:(替换字符串的长度) newstr:(待插⼊的字符串) 1,返回字符串str, 其⼦字符串起始于pos 位置和长度被字符串 newstr取代的len 字符。
2,如果pos 超过字符串长度,则返回值为原始字符串。
3,假如len的长度⼤于其它字符串的长度,则从位置pos开始替换。
4,若任何⼀个参数为null,则返回值为NULL⽰例:替换⽤户名名的部分字符,规则如下:保留⽤户名前2位,中间3位使⽤*代替,如果姓名还有多余的字符,保留SELECT INSERT(name,2,3,'***') FROM student;运⾏的结果为:d.①LENGTH:字符串所占⽤的字节数SELECT LENGTH(name) FROM student;②CHAR_LENGTH:计算字符数SELECT CHAR_LENGTH(name) FROM student;e:LPAD/RPAD:字符串的字符数如果⼤于给定的个数,如果少了就从函数指定的边补齐指定个数,如果多了从字符串的最后截掉 LPAD(str,len,padstr):左填补 1,返回字符串str, 其左边由字符串padstr 填补到总长度为len。
MySQL中的字符串处理函数和技巧在数据库管理系统中,字符串处理是非常常见和重要的操作之一。
MySQL作为最受欢迎的关系型数据库管理系统之一,提供了许多强大的字符串处理函数和技巧,方便用户对数据进行灵活的操作和处理。
本文将介绍MySQL中常用的字符串处理函数和技巧,以及它们的应用场景。
一、字符串连接和拼接1. CONCAT函数CONCAT函数是MySQL中最常用的字符串连接函数之一。
它可以将多个字符串拼接在一起,并返回一个新的字符串。
例如,我们有一个students表,其中包含了学生的姓名和年龄。
我们可以使用CONCAT函数将姓名和年龄拼接在一起,并用逗号进行分隔。
SELECT CONCAT(name, ', ', age) AS info FROM students;这条SQL语句将返回一个新的列info,其中包含了学生的姓名和年龄,如"John, 20"。
2. CONCAT_WS函数CONCAT_WS函数类似于CONCAT函数,不同之处在于它可以指定一个分隔符作为参数。
这个分隔符将在拼接字符串时插入到每个字符串之间。
例如,我们有一个employees表,其中包含了员工的名字、年龄和职位。
我们可以使用CONCAT_WS函数将这些信息拼接在一起,并用逗号进行分隔。
SELECT CONCAT_WS(', ', name, age, position) AS info FROM employees;这条SQL语句将返回一个新的列info,其中包含了员工的名字、年龄和职位,如"John, 30, Manager"。
二、字符串截取和替换1. SUBSTRING函数SUBSTRING函数可以用来截取字符串的一部分。
它需要指定需要截取的字符串、起始位置和截取长度作为参数。
例如,我们有一个message表,其中包含了用户的留言内容。
如果我们只想获取留言的前10个字符,可以使用SUBSTRING函数。
matlab的strcat函数MATLAB的strcat函数是一种字符串拼接函数,它可以将多个字符串连接成一个新的字符串。
在处理字符串时,strcat函数是非常有用的,因为它可以将多个字符串合并成一个字符串,并且可以根据需要添加分隔符。
在MATLAB中,使用strcat函数很容易。
要使用该函数,只需要在命令窗口中输入以下命令:str = strcat(s1, s2, s3, ...)其中,s1、s2、s3等是要拼接的字符串。
str是拼接后的结果。
在使用strcat函数时,需要注意以下几点:1.所有输入参数都必须是字符串类型。
如果输入的参数不是字符串类型,则需要使用num2str函数将其转换为字符串。
2.可以使用空字符串作为参数。
如果某个参数是空字符串,则该参数将被忽略。
3.在拼接字符串时,不会添加任何分隔符。
如果需要添加分隔符,则需要在拼接字符串之间添加分隔符。
下面是一个示例,演示了如何使用strcat函数将两个字符串拼接在一起:s1 = 'Hello';s2 = 'World';s3 = strcat(s1, ' ', s2)该示例输出的结果为:s3 = 'Hello World'在这个示例中,我们将两个字符串“Hello”和“World”拼接在一起,中间用一个空格分隔。
除了strcat函数之外,MATLAB还提供了其他几个字符串拼接函数。
例如,使用sprintf函数可以将字符串格式化为指定的格式,并将其拼接在一起。
使用strjoin函数可以将字符串数组拼接在一起,并使用指定的分隔符分隔。
MATLAB的strcat函数是一种非常有用的字符串拼接函数,可以将多个字符串拼接在一起,非常方便。
在使用该函数时,需要注意输入参数的类型和添加分隔符等问题。
如果需要更复杂的字符串操作,可以使用其他字符串处理函数来实现。
来源网络,造福学生———————欢迎下载,祝您学习进步,成绩提升———————2018年攻读硕士学位研究生入学考试试题科目代码与名称:846数据结构与C程序设计适用专业或方向:计算机科学与技术(各方向)考试时间:3小时满分:150分试题编号:B(必须在答题纸上答题,在试卷上答题无效,答题纸可向监考老师索要)第一部分数据结构(80分)B卷一、单项选择题(20个选题,每选题2分,共40分)(备注:答题时每连续的5个为一组,组与组之间要留有空隙,例如,ACCCD ACDAC)1.从逻辑结构来说,栈属于OA.树形结构B.散列表结构C.线性结构D.图状结构2.程序段for (i=0,k=0; i<100; i++)for (j=0; j<10000; j++) k++;的时间复杂度是。
A.0(1)B. 0(n*m)C. 0(n+m)D. 0(Max(n, m))3.若线性表釆用顺序存储结构,则在删除一个元素时需要移动的元素的次数与有关。
A.首地址B.元素的值C.线性表的有序性D.删除位置4.在一个带头结点的表长为5的循环单链表中,若其头指针为L,则在它的第一个元素结前插入S所指结点,则执行OA.s->next=L->next; L->next=s;B. L->next=s-〉next-〉next;C. s->next=L->next~>next; L~>next=sD. s->next=L-〉next; L->next=L;5.队列操作的特征是oA.先进先出B.先进后出C.插入在队头D.删除的是队尾6.在递归程序的执行过程中要用到。
A.栈B.循环结构C.顺序结构D.队列第1页,共7页7.用x表示入栈操作,用s表示出栈操作,若栈的初始状态为空,则下面—合法的操作序列。
A. xssssxxxB. xssxxsxxC. XXSXSSXD. SSSXXXXSSXX第2页,共7页第3页,共7页D. 19, 78, 32, 52, 12, 44, 66 .是错误的。
《C语言程序设计》习题解答沈国荣隋雪莉闵芳目录第1章 C语言程序设计概述 (2)第2章数据类型及其运算 (3)第3章语句与输入输出 (4)第4章选择结构程序设计 (6)第5章循环结构程序设计 (9)第6章数组 (12)第7章函数 (15)第8章编译预处理 (18)第9章指针 (19)第10章结构体与共用体 (22)第11章位运算 (26)第12章文件操作 (27)第1章 C语言程序设计概述1、函数、main()函数2、/*、*/3、、C、、OBJ、、EXE4、顺序结构、选择结构、循环结构三、编程题1、【参考代码】#include<stdio、h>int main( ){printf( "(学校名称)\n" ) ;printf( "(姓名)\n" ) ;return 0 ;}2、【参考代码】#include<stdio、h>int main( ){printf( "(学校名称)\n(姓名)\n" ) ;return 0 ;}第2章数据类型及其运算注:第5题B选项为:'\'' '\017' '\t'二、填空题1、字母、数字、下划线2、1、4、4、83、-164、3、55、06、97、68、-609、y%2==110、1、0、1三、程序阅读题1、b2、03、04、10,25、9,10,9,106、3,1,0,07、3,20,30,1第3章语句与输入输出1、123、472、D3、回车4、10,2三、程序阅读题1、2612、203、201,104、y=4630y=46305、*3、140000,3、142*6、c:dec=120,oct=170,hex=78,ASCII=x7、x=1 y=2 *sum*=310 squared is : 1008、2 48 20、2 20、29、x+y+z=4810、55, ,A四、编程题1、【参考代码】#include<stdio、h>int main( ){char ch;printf("请输入一个字符:\n");scanf("%c",&ch);printf("%c的ASCII码为:%d\n", ch,ch);return 0 ;}2、【参考代码】#include<stdio、h>#define PI 3、1416int main( ){double r, h;double cl,cs,cv;printf("请输入圆的半径:");scanf("%lf", &r);printf("请输入圆柱高:");scanf("%lf", &h);cl=2*PI*r;cs=PI*r*r;cv=PI*r*r*h;printf("圆的周长为:%、4lf\n", cl);printf("圆的面积为:%、4lf\n", cs);printf("圆柱的体积为:%、4lf\n", cv);return 0 ;}3、【参考代码】#include<stdio、h>int main( ){int splitInt,one,ten,hundred;printf("输入要处理的整数:");scanf("%d",&splitInt);hundred = splitInt/100;ten = splitInt%100/10;one = splitInt%10;printf("个位:%d,十位:%d,百位:%d\n",one,ten,hundred);return 0 ;}第4章选择结构程序设计1、102、2,2,23、64、97,b5、c=-16、88887、20,08、2,19、1,12,22,1-2,210、a=1,b=3三、程序完善题1、a>b、c>x四、编程题1、【参考代码】#include<stdio、h>int main( ){int a, b, c,d,min;printf("输入4个整数:");scanf("%d%d%d%d",&a,&b,&c,&d);if(a < b) min = a;else min = b;if(c < min) min=c;if(d<min) min=d;printf("%d\n",min);return 0 ;}2、【参考代码】#include<stdio、h>int main( ){int num,a,b,c,d;printf("请输入一个四位整数:");scanf("%d",&num);a=num/1000;b=num%1000/100;c=num%100/10;d=num%10;printf("各位数字之与为:%d\n",a+b+c+d);return 0 ;}3、【参考代码】#include<stdio、h>int main( ){int x;printf("请输入x:");scanf("%d",&x);printf("y的值为:");if(x<0)printf("%d\n",x);else if(x<50)printf("%d\n",3*x-2);else if(x<100)printf("%d\n",4*x+1);elseprintf("%d\n",5*x);return 0 ;}4、【参考代码】#include<stdio、h>int main( ){int dj;float zl,je,yfk;printf("请输入等级(1~4): ");scanf("%d",&dj);if (dj>4||dj<1){printf("无此等级的苹果!\n");return 0;}printf("请输入重量(公斤): ");scanf("%f",&zl);printf("\n");switch (dj){case 1 : je=5、5*zl; break;case 2 : je=4、3*zl; break;case 3 : je=3、0*zl; break;case 4 : je=2、5*zl; break;}printf("您选择苹果级别: %d 级\n",dj);printf("您购买苹果重量: %、2f公斤\n",zl);printf("您应付金额为: %、2f元\n",je);printf("\n");printf("顾客所付金额: ");scanf("%f",&yfk);if (yfk<je){printf("Data Error!\n");return 0;}printf("应找您: %、2f元\n",yfk-je);return 0 ;}第5章循环结构程序设计1、1,2,02 、m=4,n=23、A2C4E64、1325、46、k=0,m=57、x=88、1、69、998988三、程序完善题1、( ch > 'Z' && ch <= 'Z' + 4 ) ||(ch > 'z' ) ch - 262、k k/10 continue3、i + t * 10 s = s + t4、fabs( t ) >= 1e-6 f = -f5、i<10 j%3 !=0四、编程题1、【参考代码】#include<stdio、h>int main( ){int n , i , j , k ;printf( "Output:\n" ) ;for(n = 100 ; n < 1000 ; n++ ){i = n % 10 ; /* 个位*/j = ( n / 10 ) % 10 ; /* 十位*/k = n / 100 ; /* 百位*/if ( n == i * i * i + j * j * j + k * k * k )printf( "%d\n" , n ) ;}return 0 ;}2、【参考代码】#include<stdio、h>int main ( ){int i , m , n , t , p , k ;printf( "Please input: " ) ;scanf ( "%d,%d" , &m , &n ) ;if( m < n ){t = n ;n = m ;m = t ;}p = m * n ;while ( n != 0 ) /* 余数不为0,继续相除,直到余数为0 */ {i = m % n ;m = n ;n = i ;}k = p / m ;printf( "%d,%d\n" , m , k );return 0 ;}3、【参考代码】#include<stdio、h>int main( ){int i , n , t , sum ;t = 1 ;sum = 0 ;printf( "Please input: n = " ) ;scanf( "%d" , &n ) ;for( i = 1 ; i <= n ; i++ ){t = t * i ;sum = sum + t ;}printf( "1!+2!+…+%d!= %d\n" , n , sum ) ;return 0 ;}4、【参考代码】#include<stdio、h>int main( ){int i , m ;double sum = 0 , k = 1 ;printf( "Please input : m=" ) ;scanf( "%d" , &m ) ;for( i = 1 ; i <= m ; i++ ){sum = sum + k / i ;k = -k ;}printf( "sum=%4.2f\n" , sum ) ;return 0 ;}第6章数组1 82 43 0,24 125 t*M6 mo7 fwo三、程序完善题1 k = i j = ia[k] = max a[j] = min2 sum += score[i] score[i]<avg3 s[i] = s[i] + a[i][j] printf( "\n" ) ;4 j = strlen( str ) – 1 str[j] = k5 ( c = getchar( ) ) != '#' num[c-'A'] += 1四、编程题1、【参考代码】#include<stdio、h>#define N 5int main( ){int a[N] , i , j , r , temp ;printf( "Please input %d numbers\n" , N ) ;for( i = 0 ; i < N ; i++ )scanf( "%d" , &a[i] ) ;for( i = 0 ; i < N - 1 ; i++ ){r = i ;for( j = i + 1 ; j < N ; j++ )if( a[j] < a[r] )r = j ;if( r != i ){temp = a[r] ;a[r] = a[i] ;a[i] = temp ;}}printf( "The array after sort:\n" ) ;for( i = 0 ; i < N ; i++ )printf( "%5d" , a[i] ) ;printf( "\n" ) ;return 0 ;}2、【参考代码】#include<stdio、h>int main( ){int a[10] = { 1 , 2 , 3 , 6 , 7 , 8 , 9 , 10 } ;int x , j , k = 0 ;printf( "Please input :x= " ) ;scanf( "%d" , &x) ;if( x > a[7] )a[8] = x ;else{for( j = 0 ; j < 8 ; j++ )if( x < a[j] )break ;for(k = 8 ; k > j ; k-- )a[k] = a[k - 1] ;a[j] = x ;}for( j = 0 ; j < 9 ; j++ )printf( "%5d" , a[j] ) ;printf( "\n" ) ;return 0 ;}3、【参考代码】#include<stdio、h>int main( ){int a[5][5] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, 22,23,24} ;int i , j ,sum = 0 ;for ( i = 0 ; i < 5 ; i++ ){for ( j = 0 ; j < 5 ; j++)printf( "%4d" , a[i][j] ) ;printf( "\n" ) ;}for( i =0 ;i < 5 ; i++ )sum += a[i][i] ;printf( " sum=%4d\n" , sum ) ;return 0 ;}4、【参考代码】#include<stdio、h>int main( ){char s1[100] , s2[30] ;int i , j ;printf( "Please input s1:" ) ;gets( s1 ) ;printf( "Please input s2:" ) ;gets( s2 ) ;for( i = 0 ; s1[i] != '\0' ; i++ ) ;for( j = 0 ; s2[j] != '\0' ; j++ , i++ )s1[i] = s2[j] ;s1[i] = '\0' ;printf( "Output\ns1:" ) ;puts( s1 ) ;return 0 ;}5、【参考代码】#include<stdio、h>int main( ){char s1[100] ;int i ;printf( "Please input s1:" ) ;gets( s1 ) ;for( i = 0 ; s1[i] != '\0' ; i++ ) ;printf( "The length of s1 is %d\n" ,i ) ;return 0 ;}第7章函数1 max is 22 a=1,b=23 1 114 a=11,b=12,c=25 66 7 8 97 8 178 0 1 2 0 1 2三、程序完善题1 float area ( float r ) return s2 z = fun( x , y ) z = z * x3 count =fun( score ) count++四、编程题1、【参考代码】#include<stdio、h>int main( ){void f(int n) ;int n ;printf( "Please input: n= " ) ;scanf( "%d" , &n ) ;if( n <= 0)printf( "Wrong number!\n" ) ;elsef( n ) ;return 0 ;}void f(int n){if( n % 2 == 1 )printf( "%d is a odd number、\n" , n ) ;elseprintf( "%d is a even number、\n" , n ) ; }2、【参考代码】#include < stdio、h >#include < math、h >int main( ){void f( int m ) ;int m ;printf( "Please input: m= " ) ;scanf( "%d" , &m ) ;f( m ) ;return 0 ;}void f( int m ){int i , k ;k = sqrt( m );for(i = 2 ; i <= k ; i++ )if( m % i == 0 )break;if (i >= k + 1 )printf( "%d is a Prime Number、\n" , m ) ;elseprintf( "%d is not a Prime Number、\n" , m ) ; }3、【参考代码】#include<stdio、h>int gys( int m , int n ){int r ;r = m % n ;while( r != 0 ){m = n ;n = r ;r = m % n ;}return n ;}int gbs( int m , int n , int r ){return m * n / r ;}int main( ){int m , n , t ;printf( "Please input(m,n):" ) ;scanf( "%d%d" , &m , &n ) ;if( m < n ){t = m ;m = n ;n = t ;}t = gys( m , n ) ;printf( "gys=%d\n" , t ) ;t = gbs( m , n , t ) ;printf( "gbs=%d\n" , t ) ;return 0 ;}4、【参考代码】#include<stdio、h>int main( ){void mystrcat( char s1[100] , char s2[30] ) ;char s1[100] , s2[30] ;printf( "Please input s1:" ) ;gets( s1 ) ;printf( "Please input s2:" ) ;gets( s2 ) ;mystrcat( s1 , s2 ) ;printf( "Output\ns1:" ) ;puts( s1 ) ;return 0 ;}void mystrcat( char s1[100] , char s2[30] ){int i , j ;for( i = 0 ; s1[i] != '\0' ; i++ ) ;for( j = 0 ; s2[j] != '\0' ; j++ , i++ )s1[i] = s2[j] ;s1[i] = '\0' ;}第8章编译预处理1 6,182 153 5第9章指针二、填空题1、地址, NULL(或0)2 、char a, *p; , scanf("%c", &a); , p=&a;3、*m4、for( k=0; k<10; k++ )5、*(p+i) , p[i] , *(x+i)6、str[i]或*( str + i ) , i三、程序阅读题1、gae2、bcdABCD3、7, 8, 84、8 45、 3 14 26、efgh7、w,one8、7四、程序完善题1、a[i] 或*( a + i )2、*p!='\0' *p-'0'3、p1 p2-x4、max(int a , int b ); p = max四、编程题1、【参考代码】#include<stdio、h>void sort( int *a , int *b , int *c );int main(){int m , n , t ;printf( "Please input(m n t):" ) ;scanf( "%d%d%d" , &m , &n , &t ) ;sort( &m , &n , &t ) ;printf( "The result is :%d\t%d\t%d\n" , m , n , t ) ;return 0 ;}void sort( int *a , int *b , int *c ){int temp ;if( *a > *b ) { temp = *a ; *a = *b ; *b = temp ; }if( *a > *c ) { temp = *a ; *a = *c ; *c = temp ; }if( *b > *c ) { temp = *b ; *b = *c ; *c = temp ; }}2、【参考代码】程序1:#include <stdio、h>int strcompare( char *str1 , char *str2 );int main( ){int m ;char s1[20] , s2[20] , *p1 , *p2 ;printf( "Please input(string1):" ) ;scanf( "%s" , s1 ) ;printf( "Please input(string2):" ) ;scanf( "%s" , s2 ) ;m = strcompare ( s1 , s2 ) ;printf( "The result of strcompare is: %d\n" , m ) ;return 0 ;}int strcompare( char *str1 , char *str2 ){int i = 0 ;while( ( *( str1 + i ) == *( str2 + i ) ) &&( *( str1 + i ) != '\0' ) ) i++ ;return( *( str1 + i ) - *( str2 + i ) ) ;}程序2:#include <stdio、h>int strcompare( char *str1 , char *str2 );int main( ){int m ;char s1[20] , s2[20] , *p1 , *p2 ;printf( "Please input(string1):" ) ;scanf( "%s" , s1 ) ;printf( "Please input(string2):" ) ;scanf( "%s" , s2 ) ;p1 = s1 ;p2 = s2 ;m = strcompare ( p1 , p2 ) ;printf( "The result of strcompare is: %d\n" , m ) ;return 0 ;}int strcompare( char *str1 , char *str2 ){int i = 0 ;while( ( *( str1 + i ) == *( str2 + i ) ) &&( *( str1 + i ) != '\0' ) ) i++ ;return( *( str1 + i ) - *( str2 + i ) ) ;}程序3:#include <stdio、h>int strcompare( char str1[] , char str2[] );int main( ){int m ;char s1[20] , s2[20] , *p1 , *p2 ;printf( "Please input(string1):" ) ;scanf( "%s" , s1 ) ;printf( "Please input(string2):" ) ;scanf( "%s" , s2 ) ;p1 = s1 ;p2 = s2 ;m = strcompare ( p1 , p2 ) ;printf( "The result of strcompare is: %d\n" , m ) ;return 0 ;}int strcompare( char *str1 , char *str2 ){int i = 0 ;while( ( str1[i] == str2[i] ) &&( str1[i] != '\0' ) )i++ ;return( str1[i]- str2[i] ) ;}第10章结构体与共用体1、112 、p->next=head->next head->next=p3、p->next三、程序阅读题1、51,60,212、163、1001,ChangRong,1098、0四、程序完善题1、sizeof( struct ps ) 或sizeof( bt )2、p=p->next3、person[i]、sex五、编程题1、【参考代码】#define N 3#include <stdio、h>struct student{char num[6] ;char name[8] ;int score[2] ;float ave ;} ;void input( struct student stu[N] ) ;void average( struct student stu[N] ) ;int max( struct student stu[N] ) ;int main( ){int i , j ;struct student stu[N] ;input( stu ) ;average( stu ) ;printf( "No\tName\tScore1\tScore2\tAverage\n" ) ;for( i = 0 ; i < N ; i++ ){printf( "%s\t%s\t" , stu[i]、num , stu[i]、name ) ;for( j = 0 ; j < 2 ; j++ )printf( "%d\t" , stu[i]、score[j] ) ;printf( "%8、2f\n" , stu[i]、ave ) ;}i = max( stu ) ;printf( "\nThe max is:\n" ) ;printf( "No\tName\tScore1\tScore2\tAverage\n" ) ;printf( "%s\t%s\t" , stu[i]、num , stu[i]、name ) ;for( j = 0 ; j < 2 ; j++ )printf( "%d\t" , stu[i]、score[j] ) ;printf( "%5、2f\n" , stu[i]、ave ) ;return 0;}void input( struct student stu[N]){int i , j ;for(i=0;i<N;i++){printf("\nPlease input No%d student:\n",i+1);printf("No:");scanf("%s",stu[i]、num);printf("Name:");scanf("%s",stu[i]、name);for(j=0;j<2;j++){printf("score %d:",j+1);scanf("%d",&stu[i]、score[j]);}}}void average( struct student stu[N]){int i , j , sum ;for(i=0;i<N;i++){for(j=0 , stu[i]、ave = 0 ;j<2;j++)stu[i]、ave += stu[i]、score[j];stu[i]、ave = stu[i]、ave / 2 ;}}int max( struct student stu[N]){int i , max , index;max = stu[0]、ave ;index = 0 ;for( i = 1 ; i < N ; i++ ){if( max < stu[i]、ave ){max = stu[i]、ave ;index = i ;}}return index;}2、【参考代码】#include<stdio、h>#include<stdlib、h>struct node{short int data ;struct node *next ;} ;typedef struct node NODE ;struct node *CreatLink( ) ;void PrintLink( NODE *head ) ;int max( NODE *head );int main( ){NODE *head ;int max_value ;head = CreatLink( ) ;PrintLink( head ) ;max_value = max( head ) ;printf( "The max is:%d\n" , max_value ) ;return 0 ;}struct node *CreatLink( ){NODE *head , *p , *q ;short int num ;head = ( NODE * )malloc( sizeof( NODE ) ) ;head->next = NULL ;p = head ;printf( "Please input( end of -1)!:\n" ) ;scanf( "%d" , &num ) ;while( num != -1 ){q = ( NODE *)malloc( sizeof( NODE ) ) ;q->data = num ;p->next = q ;p = q ;scanf( "%d" , &num ) ;}p->next = NULL ;return head ;}void PrintLink( NODE *head ){NODE *p;p = head->next ;printf( "The data is:\n" ) ;while( p != NULL ){printf( "%4d" , p->data ) ;p = p->next ;}printf( "\n" ) ;}int max( NODE *head ){NODE *p;short int max = -32768;p = head->next ;while( p != NULL ){if( max < p->data )max = p->data ;p = p->next ;}return max ;}第11章位运算1、0000 11112 、x | ff003、4 3三、程序阅读题1、02、11 223、0四、编程题1、【参考代码】#include<stdio、h>int main(){short int data , low ,high ;printf( "Please input( short int):" ) ;scanf( "%d" , &data ) ;low = data & 0x00ff ; /* 0x00ff表示低字节全1 */high = data & 0xff00 ; /* 0xff00表示高字节全1 */printf( "data:0x%x,the value of low byte is:0x%x\n" , data , high ) ;printf( "data:0x%x,the value of high byte is:0x%x\n" , data , low ) ;return 0 ;}2、【参考代码】#include <stdio、h>int main( ){short int data , result ;printf( "Please intput(short int):" ) ;scanf( "%d" , &data ) ;result = data ^ 0x000f ; /* 0x000f表示低4位全1,高12位全0 */ printf( "The data is 0x%x \nThe result is :0x%x\n" , data,result ) ;return 0 ;}第12章文件操作二、填空题1、二进制ASCII(文本)2 、FILE *fp # include <stdio、h>3、n – 1 buf的首地址4、 15、用以获得文件读写位置标记指针的位置,函数返回值为当前文件读写位置标记指针相对于文件开头的字节数6、使文件读写位置标记指针重新返回文件的开头三、程序阅读题1、1 22、end3、 34、hello,四、程序完善题1、! feof (fp) fgetc (fp)2、fopen (“num、dat”,”r”) fp,”%d”,&temp z++3、( ch=getchar() ) ch , fp五、编程题1、【参考代码】#include<stdio、h>#include<stdlib、h>#include<string、h>int main( ){FILE *fp ;char str[100] , [10] ;int i = 0 ;if( ( fp = fopen( "upper、txt" , "w+" ) ) == NULL ){printf( "Cannot open file!\n" ) ;exit( 0 ) ;}printf( "Please input(string):\n" ) ;gets( str ) ;while( str[i] != '!' ){if( str[i] >= 'a' && str[i] <= 'z' )str[i] = str[i] - 32 ;fputc( str[i] , fp ) ;i++ ;}rewind( fp ) ;fgets( str , strlen( str ) + 1 , fp ) ;printf( "\nThe result is :\n" ) ;printf( "%s\n" , str ) ;fclose( fp ) ;return 0 ;}2、【参考代码】#include<stdio、h>#include<stdlib、h>#define N 5struct student{char num[10] ;char name[8] ;int score[3] ;float ave ;} stu[N] ;int main( ){int i , j , sum ;FILE *fp ;for( i = 0 ; i < N ; i++ ){printf( "\nPlease input student information: \n" , i + 1 ) ;printf( "No:" ) ;scanf( "%s" , stu[i]、num ) ;printf( "Name:" ) ;scanf( "%s" , stu[i]、name ) ;sum = 0 ;for( j = 0 ; j < 3 ; j++ ){printf( "Score%d:" , j + 1 ) ;scanf( "%d" , &stu[i]、score[j] ) ;sum += stu[i]、score[j] ;}stu[i]、ave = sum / 3、0 ;}if( ( fp = fopen( "stud、dat" , "w" ) ) == NULL ){printf( "cannot open stud for write!\n" ) ;exit( 0 ) ;}for( i = 0 ; i < N ; i++ ){fwrite( &stu[i] , sizeof( struct student ) , 1 , fp ) ;}fclose( fp ) ;if( ( fp = fopen( "stud、dat" , "r" ) ) == NULL ){printf( "cannot open stud for read!\n" ) ;exit( 0 ) ;}printf( "\nNo\tName\tScore1\tScore2\tAverage\n" ) ;for( i = 0 ; i < N ; i++ ){fread( &stu[i] , sizeof( struct student ) , 1 , fp ) ;printf( "\n%s\t%s\t%d\t%d\t%5、2f\n" , stu[i]、num , stu[i]、name , stu[i]、score[0] , stu[i]、score[1] , stu[i]、score[2] ,stu[i]、ave ) ;}fclose( fp ) ;return 0 ;}3、【参考代码】#include<stdio、h>#include<stdlib、h>#define N 5struct student{char num[10] ;char name[8] ;int score[3] ;float ave ;} stu[N] ;int main( ){int i , j , min , index ;FILE *fp ;struct student temp ;/*从stud、dat文件中读入数据,存放在stu数组中*/if( ( fp = fopen( "stud、dat" , "r" ) ) == NULL ){printf( "cannot open stud for read!\n" ) ;exit( 0 ) ;}printf( "\nThe data is :" ) ;printf( "\nNo\tName\tScore1\tScore2\tAverage\n" ) ;for( i = 0 ; i < N ; i++ ){fread( &stu[i] , sizeof(struct student ) , 1 , fp ) ;printf( "\n%s\t%s\t%d\t%d\t%5、2f\n" , stu[i]、num , stu[i]、name , stu[i]、score[0] , stu[i]、score[1] , stu[i]、score[2] ,stu[i]、ave ) ;}fclose( fp ) ;/*对stu数组中数组元素按其平均值数据域排序*/for( i = 0 ; i < N -1 ; i++ ){min = stu[i]、ave ;index = i ;for( j = i + 1 ; j < N ; j++ ){if( min > stu[j]、ave )index = j ;}if( index != i ){temp = stu[i] ;stu[i] = stu[index] ;stu[index] = temp ;}}/*将排序之后的stu数组存放在stu_sort文件中*/if( ( fp = fopen( "stu_sort、dat" , "w" ) ) == NULL ){printf( "cannot open stud for write!\n" ) ;exit( 0 ) ;}for( i = 0 ; i < N ; i++ ){fwrite( &stu[i] , sizeof(struct student) , 1 , fp ) ;}fclose( fp ) ;/*将stu_sort文件中的数据,读出存放在stu数组中*/if( ( fp = fopen( "stu_sort、dat" , "r" ) ) == NULL ){printf( "cannot open stud for read!\n" ) ;exit( 0 ) ;}printf( "\nThe result is:" ) ;/*将stu数组中的数据输出*/printf( "\nNo\tName\tScore1\tScore2\tAverage\n" ) ;for( i = 0 ; i < N ; i++ ){fread( &stu[i] , sizeof(struct student) , 1 , fp ) ;printf( "\n%s\t%s\t%d\t%d\t%5、2f\n" , stu[i]、num , stu[i]、name , stu[i]、score[0] , stu[i]、score[1] ,stu[i]、score[2] , stu[i]、ave ) ;}fclose( fp ) ;return 0 ;}。
参考答案一、单项选择题:(10分,每题2分)1.char (*p)[10];该语句声明了一个:A。
A) 指向含有10个元素的一维字符型数组的指针变量pB) 指向长度为10的字符串的指针变量pC) 有10个元素的指针数组p,每个元素可以指向一个字符串D) 有10个元素的指针数组p,每个元素存放一个字符串2.以下错误的描述是(C )。
A)不同的函数中可以使用相同名字的变量,互不干扰B)形式参数都是局部变量C)函数定义可以嵌套D)C语言中的函数参数传递都是单向值传递3.以下对二维数组进行正确初始化的是( B )。
A)int a[2][3]={{1,2},{3,4},{5,6}};B)int a[][3]={1,2,3,4,5,6};C)int a[2][]={1,2,3,4,5,6};D)int a[2][]={{1,2},{3,4}};4.已知:union{double k;char c;float a;}test;则sizeof(test)的值是:A。
A)8 B)1 C)4 D)135.设有语句int a = 3; 执行了语句a += a -= a *= a; 后,变量a的值是____B____。
A) 3 B) 0 C) 9 D) -12二、写出下列程序的运行结果。
(10分,每题2分,第2、4、5题打印结果正确但是没有换行时,给1分)1.#include <stdio.h>main(){char c;while ((c = getchar()) != '$'){putchar(c);}printf("End!\n");}程序运行时输入abcdefg$abcdefg↙则程序的运行结果为abcdefgEnd!2.#include<stdio.h>void Fun(int *y){printf("*y = %d\n", *y);*y = 20;printf("*y = %d\n", *y);}main(){int x = 10;printf("x = %d\n", x);Fun(&x);printf("x = %d\n", x);}运行结果是:x = 10*y = 10*y = 20x = 203.#include <stdio.h>main(){int n;for (n=1; n<=5; n++){if (n % 2){printf("*");}else{continue;}printf("#");}printf("$\n");}运行结果是:*#*#*#$4.#i nc lu de <st d io.h>st ru ct d at e{in t y ea r;in t m on th;in t d ay;};vo id f un c(st r uc t da te *p){p->y ea r = 2006;p->m on th = 11;p->d ay = 18;}ma in(){st ru c t da te d;d.ye a r = 2005;d.mo n th = 12;d.da y = 10;pr in t f(“%d,%d,%d\n”,d.ye ar,d.mo nt h,d.da y);fu nc(&d);pr in t f(“%d,%d,%d\n”,d.ye ar,d.mo nt h,d.da y);}运行结果是:2005,12,102006,11,185.#include<stdio.h>in t Fu n(in t x){st at ic i nt y= 10;y += x;re tu rn y;}ma in(){in t y= 0, k;fo r (k=0; k<2; k++){y = Fu n(k);pr in tf("y = %d\n", y);}}运行结果是:y = 10y = 11三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。