二级C语言机试模拟136
1、填空
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
1、请补充main函数,该函数的功能是:把字符串str中的字符向前移
动一位,原来的第一个字符移动到字符串尾,结果仍然保存在原字符串中。
例如,输入“how do you do?”,则结果输出“ow do you do?h”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线
上填入所编写的若干表达式或语句。
试题程序:
#include
#define N 80
main()
{
char str[N], ch;
int i;
clrscr ();
printf("\n Input a string:In");
gets (str);
printf("\n*** original string ***In");
puts (str);
ch=str [0];
for (i=0; 【1】; i++)
str [i]=str [i+1];
【2】;
printf("\n *** new string ***\n");
puts (str);
}
2、改错题
1、下列给定程序中,函数fun()的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由 main()函数输出。
例如,若输入2,则输出1 2
2 4
输入4,则输出1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
试题程序:
#include
#include
#define M 10
int aiM] [MI={0};
/***************found*******************/
fun( int **a, int m)
{int j,k;
for (j=0; j
#include
#define N 80
void fun (char *w, int m)
{
}
main ( )
{
char a[N]= "ABCDEFGHIJK";
int m;
printf ("The origina string : \n");
puts (a);
printf("\n\nEnter m: ");
scanf ("%d", &m);
fun (a, m);
printf (" \nThe string after moving : \n");
puts (a);
printf ("\n\n");
}
答案:
1、填空题
1、[1] str[i+1] [2]str[i]=ch
[解析] 填空1:for循环的条件是要移动的字符不为'0',即还没有到字符串的最后一个字符。填空2:ch中保存了字符串的第一个字符,按题目要求移动到
字符串尾,而str[i]是'\0'的前一个字符,也就是字符串尾,故将ch赋给
str[i]。
2、改错题
1、(1)错误:fun(int**a, int m) 正确:void fun(int(*a)[M],int m)
(2)错误:a[j][k]=k*j;正确:a[j][k]=(k+1)*(j+1);
[解析] 对于二维数组,应该理解成为是由几个一维数组作元素组成的一维数组,或者说,二维数组实际是一个一维数组,只不过它的每个数组元素又都是一个
一维数组。我们先来看看指针数组的表示形式:
(1)p+i和a+i均表示a[i]的地址,或者讲,它们均指向数组第i号元素,即指向a[i]。
(2)*(p+i)和*(a+i)都表示p+i和a+i所指对象的内容,即为a[i]。
(3)指向数组元素的指针,也可以表示成数组的形式,也就是说,它允许
指针变量带下标,如p[i]与*(p+i)等价。因此,二维数组元素a[i][j]可表示
成*(a[i]+j)或*(*(a+i)+j),它们都与a[i][j]等价,或者还可写成
(*(a+i))[j]。了解了以上这些内容后本题就好解决了。
3、编程题
1、void fun(char *w,int m)
{
int i,j;
char t;
for(i=1;i<=m;i++) /*进行m次的循环左移*/
{t=w[0];
for(j=1/w[j]!='\0';j++) /*从第2个字符开始以后的每个字符都依次前移一个字符*/
w[j-1]=w[j];
w[j-1]=t;/*将第1个字符放到最后一个字符中*/
}
}
[解析] 我们在学习C语言的时候,应该广泛地应用到循环的方法,本题应采用“循环左移”的算法。即从第2个字符开始以后的每个字符都依次前移一个字符,而原来的第1个字符放在串中的最后一个字符。当要平移m个字符时,则要进行m次的循环左移。内嵌的循环的作用是完成从第2个字符开始以后的每个字符都依次前移一个字符,w[j-1]=t的作用是将第1个字符放到最后一个字符中。