参考程序:
#include
{ int i,j,k,a[3][4],max,maxj,flag;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf(\
for(i=0;i<3;i++) { max=a[i][0];
maxj=0;
for(j=0;j<4;j++) if(a[i][j]>max)
{max=a[i][j]; maxj=j; } flag=1;
for(k=0;k<3;k++) if(max>a[k][maxj]) { flag=0; break; } if(flag)
{printf(\}
if(!flag)
printf(\
}
21
实验 8 字符数组的应用
一、实验目的
(1)掌握字符数组和字符串函数的使用。 (2)掌握与字符串处理有关的算法。 二、实验内容
[题目 1121:定义存贮字符串的字符数组]
在下面程序中填充定义字符数组的语句,使程序完整。 #include \void main() { char s[80]; /*定义字符数组 s*/
strcpy(s, \
printf(\
}
参考程序:
[题目 1123:字符串的输入与输出]
下面程序实现从键盘读入字符串,然后输出到屏幕,请填充必要的语句。 #include \void main()
{
char s[50];
printf(\gets(s); /* 由键盘读入字符串*/ printf(\
printf(\%s\打印字符串*/
}
参考程序:
[题目 1122:字符串的合并]
从键盘输入 3 个字符串(每个字符串以回车符做为结束标志),将 3 个字符串以输入先后顺序合并到
字符串 s 中,请填空使用程序完整。
#include \#include \main() {
char s[100]=\char a[30];
gets(a); strcat(s, a);
22
gets(a); strcat(s, a); gets(a); strcat(s, a);
/*可以写多行代码*/
printf(\
}
[自测数据] [键盘输入] 123 abc 456
参考程序:
[正确输出] 123abc456
[题目 1050:寻找字符串]
由键盘输入两个字符串(假设第一个字符串必包含第二个字符串,如第一个字符串为 ABCDEF,
第
二个为 CDE,则 CDE 包含在 ABCDEF 中),现要求编程输出第二字符串在第一行字符串中出现
的位置。
(如果第二个字符串在第一个字符串中出现多次,则以最前出现的为准) [第一组自测数据] [第二组自测数据]
[键盘输入] [键盘输入]
ABCDEFG↙ hellhello!↙
hello↙ DE↙
[正确输出] [正确输出]
4 5
[提示]方法 1:建立双重循环,外层循环变量指示第一个串的查找起始位置,内层循环从起始位置开始判
断第二个字符中是否出现在此处;方法 2:使用字符串函数 strstr()。
参考程序:
#include \
main()
{ int i,j;
char a[80], b[80];
gets(a); gets(b);
for(i=0;a[i]!='\\0';i++)
{ for(j=0;b[j]!='\\0';j++)
if(a[i+j]!=b[j]) break; if(b[j]=='\\0') break; }
if (a[i]!='\\0') printf(\else printf(\}
23
实验 9 函数的基本应用
一、实验目的
(1)掌握定义函数的方法。
(2)掌握函数实参与形参的对应关系,以及“值传递”的方式。 (3)掌握函数的嵌套调用和递归调用的方法。
(4)掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验内容
[题目 1059:函数定义]
下面是使用辗转相除法,求最大公约数的程序,请补充完整程序中函数的定义与调用。 #include \
int f(int m, int n) {
int r;
while ((r=m%n)!=0) {
m=n;
n=r;
}
return n;
}
main() {
int a, b, n;
scanf(\
printf(\f(a, b) );
}
[题目 1083:编写函数计算阶乘]
下面程序实现由键盘读入整数 n,计算并输出 n!,请补充完整计算阶乘的函数。 long fanc(int a) { long i,n=1;
for(i=1;i<=a;i++) n=n*i; return n; }
void main()
{ int n;
scanf(\
24
}
printf(\
[题目 1124:函数中的变量]
写出下面程序的运行结果:
int f1(int x)
{ static int z=3,y=0;
y++; z++;
return(x+y+z); }
main()
{ int a=1,k;
for(k=0;k<3;k++) printf(\}
程序运行结果为: 6 8 10
*[题目 1084:编写递归调用函数,实现十进制数转二进制数]
下面程序,实现由键盘输入一个正整数(不大于 100000000),输出其对应的二进制数(原码表示)。
请填空:
#include \void fun( int i )
{ if (i>1)
fun(i/2) ;
printf(\
i%2);
}
main() { int n;
scanf(\fun(n) ; }
25