c语言经典大题

来源:互联网 发布:mac dwg文件怎么打开 编辑:程序博客网 时间:2024/06/06 01:27

c语言考试的时候,做大题之前,记得把题目给复制一遍,防止出现问题。

另外,一定要牢记,正确的把变量进行初始化,否则会产生难以预料的后果。
注意检查数组是否越界。

注意检查函数是否有返回值。

所谓的矩阵,其实就是二维数组

求二维数组周边元素之和,可以采用迂回的方法,虽然代码量增加了,但是逻辑关系十分清晰。先求出所有元素的和,在减去内层元素的和。eg:
{
int sum1=0,sum2=0;
int i=0,j=0;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
sum1+=a[i][j];
for(i=1;i<9;i++)
for(j=1;j<4;j++)
sum2+=a[i][j];
return sum1-sum2;
}

另还有其他方法,它的思路是这样的,我们先来观察周边元素(假设改二维数组是M行N列的二维数组)的特点,所谓周边元素,就是下标为0或者M-1或者N-1的元素,这样也不失为一个好办法。

c语言编程题目,考察的题型有删除指定字符串的内容,矩阵转换,排序
其中删除指定字符串的思想是保留剩下来的字符串。根据题目要求,一般是综合运用指针和数组,进行循环和if进行编写,把符合条件的数据取出,放进另外一个数组或者指针里面。需要定义i和j,i用于遍历原来的数组,j用于把数据放入新的数组中。
eg:这里写图片描述
解题,(注意)此处只粘贴核心代码:
这里写图片描述
此题注意关于确定i的最大值的思路,需要记住,最开始我想的是直接是100,但是仔细想想是不正确的,因为或产生大量的垃圾值。
如果是字符串,记得一定要注意最后添加‘\0’,否则这个字符串会变成垃圾值。

矩阵转换的题目较为简单,其实就是用一个for循环就能实现。

排序的算法比较简单,若是简单的排序比较简单,若是和链表结合起来,则稍微麻烦一些,但是都是有规律可循的。
如果是天空和改错,注意*和->,next之类的,返回类型,之类的。

二维数组转化为一维数组:转化后有俩种情况,一种是按行排列,一种是按列排列。注意这俩种是有区别的,区别在于for循环处的实现中内层和外层循环变量的控制,一定要注意,否则会蒙蔽的。

给定若干整数,把数字重新排列的方法是分别对每个数字进行%和/ ,,,, 即取余和除。。。有的题目是给定一个整数,然后按照要求取出其中的几位,思想是一样的根据题目的要求,进行/%运算,有一种需要判断给定的数字是多少位的,思想是让该数字除以10,然后用一个变量i去记录,当该数字除以10不等于0,i去自增,这样就可以记录该数字的位数。(注意:如果随后可能会用到该数字的话,最好在定义一个变量,存放该值,避免值改变后,影响后面的结果)其实在c语言中求10的i次方,可以用一个for循环去实现,(s=s*10;)呵呵呵,就这些吧。。。。

输出结构体变量,不能作为整体进行输出,只能把各个成员分别单独输出。

从一个二维数组中取出最长的一个字符串,
这里写图片描述

改错题注意关键词的大小写和标点符号是否运用正确。。

关于累加问题的求解方法:
这里写图片描述
最开始的设想是需要俩个for循环,但是在做题的过程中发现,完全用不到,这道题的思路其实很简单,注意观察,此题目的通项是分母1+2+3+…+n,所以通过一个for循环,用一个变量自增就可以。此时相当于知道了每项,用for循环遍历每项即可。另外还要注意一些细节,比如说for循环从哪里开始,比如说这就不是从0开始的,还有for循环结束的位置。等等,这些不是难点,但是确是细节,注意把握。此题目的程序如下:
float fun(int n)
{
int i=0,m=0;
float s=0.0;
for(i=1;i<=n;i++)
{
m=m+i;
s=s+1.0/m;
}
return s;
}

掌握几种常见的排序。

判断一个字符串中一个单词是否结束的算法:
for(i=0;s[i]!=’\0’;i++)
if(s[i]!=’ ‘&&(s[i+1]==’ ‘||s[i+1]==’\0’)) /如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束/

判断一个字符串是否是连续字符的方法:主要是定义俩个变量,一个用于记录上一个,一个用于记录当前的字符就可以了。
int flag=1,i;
char before_ch=t[0];
char current_ch;
int len=strlen(t);
if(len<2)
{
return 0;
}
for(i=1;t[i]!=’\0’;i++)
{
current_ch=t[i];
if(before_ch!=current_ch-1)
{
flag=0;
break;
}
before_ch=current_ch;
}
return flag;

关于判断一个数是否是素数的方法。定义是除了1和它本身外,不能被其他的数整除。思想:用for循环,用该数字,从2开始,对每个小于或者等于它的数字进行取余运算,如果不等于0,则认为该数字为素数。eg:
本例是找到所有小于lim的素数。
这里写图片描述

从一个二维数组中取出最长的一个字符串。
这里写图片描述

1.题目:
这里写图片描述

解题思路:这里写图片描述

答案:
这里写图片描述

2.题目
这里写图片描述

这里写图片描述

3.题目
这里写图片描述

void fun( char *a, char *p )
{
char *t=a;
for(;t<=p;t++)
{
if(t!=’‘)
*(a++)=*t;
}
for(;*t!=’\0’;t++)
{
*(a++)=*t;
}
*a=’\0’;
}

main()
{ char s[81],*t;
void NONO ( );
printf(“Enter a string:\n”);gets(s);
t=s;
while(*t)t++;
t–;
while(t==’‘)t–;
fun( s , t );
printf(“The string after deleted:\n”);puts(s);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i ; char s[81],*t ;
in = fopen(“in.dat”,”r”) ;
out = fopen(“out.dat”,”w”) ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in, “%s”, s) ;
t=s;
while(*t)t++;
t–;
while(t==’‘)t–;
fun(s,t) ;
fprintf(out, “%s\n”, s) ;
}
fclose(in) ;
fclose(out) ;
}

1 0
原创粉丝点击