C语言实验指导(不含答案)

for ( ) scanf (“%d”, p); for ( ) if ( ) max=*p; printf (“MAX=%d\\n”,max); }

(2)字符串和字符指针。输入一个字符串,将其中的大写字母转换成小写字母,然后输出。

字符数组实现: # include void main() {char s[20]; int i;

gets( ); for( );

if( ) s[i]=s[i]+?a?-?A?; i=0;

while( )

{ printf (“%c”,s[i]); } }

字符指针变量实现: #include void main() { char s[20]; char *p;

scanf(“%s”,p); /*注意用scanf()输入和gets()输入的

区别*/

while( ) {

if( ) *p=*p+(?a?-?A?);

}

puts ( ); } ??????????????WSJ 提示:scanf ()输入时遇到空格认为字符串结束,用gets()输入时只有遇到回车才认为字符串结束。如键入any boy并回车,则

scanf (“%s”,s)的结果为: a n y \\0 gets (s)的结果为: a n y b o y \\0

3、编程序并上机调试运行程序(都要求用指针处理)。 (1) 输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。 (2)将一个3×3的矩阵转置,用一函数实现之。

在主函数中用scanf函数输入以下矩阵元素: l 3 5 7 9 11 13 15 19

将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。 (3)用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp (char * p1, char * p2); 设p1指向字符串s1,p2指向字符串s2,要求当s1=s2时,函数返回值为 0, 如果sl≠s2,则返回它们二者第一个不相同字符的ASCII码差值(如“BOY”与“BAD”的第二个字母不相同,“O”与“A”之差为79—65=14);如果sl>s2,则输出正值;如果sl

两个字符串s1、s2由main函数输入,strcmp函数的返回值也由main函数输出。

(4)编程统计一个字符串中大写字母、小写字母、数字和其他字符的个数。

提示:只要逐个检查字符串中的字符,然后将相应的计数器加1就可以统计出各类字符的数量,设up用于记录大写字母数量,low用于记录小写字母数量,digit用于记录数字数量,other用于记录其他字符的数量, (5)编写函数,函数原型如下:

int getdata( char *str );

判断字符串str是否为十进制串,若是转换为十进制数返回,若不是则返回-1。

并编写主函数,调用该函数,输入一行字符,将其转换为十进制数输出。

实验9 结构体和共用体

一、实验目的

1、掌握结构体类型变量的定义和使用; 2、掌握结构体类型数组的概念和使用; 3、了解共用体的概念与使用。

二、实验内容

1、 调试程序并运行

(1)定义一个结构体变量(包括年、月、日),计算给定日期在本年中是第几天。

struct dt

{ int year ; int month ; int day ; }date ; main( )

{ int days( ) ;

int i , day_sum ;

printf (“Please input Y,M,D\\n” ) ; scanf

( “%d %d %d ”,date.year,date.month,date.day ) ;

printf ( “\\n%d %d %d is: %d

days\\n”,date.year,date.month,date.day,

days(date ) );} int days ( int year,int month,int day) { int i,day_sum=0 ; static int

day_tab[13]={ 0,31,28,31,30,31,30,31,31,30,31,30};

for(i=0;i

if ((year%4= =0 && year0 !=0 || year@0= =0 ) &&

month>=3)

day_sum+=1; return day_sum;

}

(2)输入和运行以下程序

union data

{ int i[2];

float a; long b; char c[4]; }u;

main ( )

{ scanf(\

printf(i[0]=%d,i[1]=ú=?=c[0]=%c,c[1]=%c,

c[2]=%c,c[3]=%c,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]);

}

输入两个整数10000、20000给u.i[0]和u.i[l],分析运行结果。

然后将scanf语句改为:

scanf(\%ld\;

输入60000给b,分析运行结果。

2、程序填空并调试运行。

(1)结构体变量案例。编程输出两个小孩的记录信息。1 个男孩和1 个女孩,其姓名首字母分别为“R”和“H”;男孩15岁,女孩比男孩小1岁子;男孩的成绩为75,女孩的成绩为82。

该案例涉及结构体变量的定义、初始化和结构体变量成员的引用。

# include void main() {

struct childrec /*定义结构体类型*/ {

char initial; /*姓名首字母*/ int age; /*年龄*/ int grade; /*成绩*/ }boy,girl;

boy.initial=?R?; girl. initial=?H?; girl.age=boy.age-1;

联系客服:779662525#qq.com(#替换为@)