小白学C语言的记录博,课程已经结束了,不会再更新了。
题目都是实验课老师布置的,代码有参考其他大佬,特此致谢!
使用教材:C语言程序设计(第3版) 何钦铭、颜晖主编 高等教育出版社
六、数组
1
以等腰三角形输出n行杨辉三角形。n的值从键盘输入且小于10,每个数字输出占4列。
#include
int main (void)
{
int a[14][14],n=0,i,j,k;
while (n<=0 || n>=13)
scanf("%d",&n);
for (i=1;i<=n;i++)
a[i][1]=a[i][i]=1;
for (i=3;i<=n;i++)
for(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for (i=1;i<=n;i++){
for (k=1;k<=n-i;k++)
printf (" ");
for (j=1;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
样例
2
教材P177:第7章课后习题题三(2)-数字个数统计。
#include
int main (void)
{
int n,a[1001],s[10]={0},i,j,max;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{ while(a[i]!=0)
{ j=a[i]%10;
s[j]++;
a[i]=a[i]/10;
}
}
max=0;
for(j=1;j<10;j++)
{ if(s[j]>s[max])
max=j;
}
printf("%d:%d\n",max,s[max]);
return 0;
}
样例
3
从键盘接收一个字符串,判定输入的字符串是否为回文。
#include
int main (void)
{
int i,k;
char line[50];
printf("input a string\n");
k=0;
while ((line[k]=getchar())!='\n')
k++;
line[k]='\0';
i=0;
k=k-1;
while (i<k)
{
if(line[i]!=line[k]) break;
i++;
k--;
}
if(i>=k)
printf("yes");
else
printf("no");
return 0;
}
样例
4
从键盘输入由小写英文字母构成的字符串,统计字符串中各个字母出现的次数,并输出其中至少出现过一次的字母及其出现的次数。
#include
int main()
{
int a[100]={0},i,j;
char c;
while((c=getchar())!='\n')
for (i=65;i<=90;i++)
if(c==i+32)
a[i]++;
for (j=65;j<=90;j++)
if (a[j]>0)
printf("%c:%d\n",j+32,a[j]);
return 0;
}
样例
5
从键盘输入三行文字(每行不超过80个字符),统计出其中大写字母、小写字母、数字字符、空格、其它字符的个数。
#include
int main (void)
{
int i,j;
int up=0,low=0,dig=0,spa=0,oth=0;
char a[3][80];
for (i=0;i<3;i++)
gets(a[i]);
for (i=0;i<3;i++)
for (j=0;j<80 && a[i][j]!='\0';j++)
if (a[i][j]>='A' && a[i][j]<='Z')
up++;
else if (a[i][j]>='a' && a[i][j]<='z')
low++;
else if (a[i][j]>='0' && a[i][j]<='9')
dig++;
else if (a[i][j]==' ')
spa++;
else
oth++;
printf("upper: %d\nlower: %d\ndigit: %d\nspace: %d\nother: %d",up,low,dig,spa,oth);
return 0;
}
样例 样例 样例 样例 样例 样例 样例 样例 样例 九、递归 样例 样例 样例 样例 十、指针进阶 样例 样例 样例 样例
6
从键盘输入两个整数m和n(1#include
7
已知一个二维整型数组已初始化a[5][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{0,1,2,3,4},{6,7,8,9,0}},请删除此数组中所有等于输入值的元素,删除后,各元素依次前移。
请注意,C语言二维数组的行优先方式存储。例如:a[3][2]的数组,在内存中依次存储a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1],也就是说,先存储第“0”行的元素,再存储第“1”行的元素。#include
8
从键盘输入一串仅由英文字母和空格构成的字符串,统计其中单词的个数,并将每个单词的第一个字母改成小写,输出统计结果以及修改后的字符串。这里“单词”是指由空格隔开的英文字符串。#include
七、指针
1
通过调用自定义函数void find(int *p,int n,int *max,int *min),在数组a中同时查找最大元素和最小元素的下标,分别存放在main()函数中的max和min变量中。#include
2
从键盘输入一个正整数n(n的值不超过10),然后输入n个互不相同的整数,通过调用一个排序函数void sort(int *x,int n)对这n个整数按从大到小的顺序排序,然后依次输出。(冒泡排序)#include
3
在主函数中输入一个字符串,然后再输入任意一个字符,通过调用一个自定义函数void chardel(char *p,char c),将字符串中存在的该指定字符删除掉,在主函数中输出删除指定字符后的字符串。#include
#include
#include
八、结构
1
定义一个有5条记录的图书类型数组,输入待查找的书名,通过调用函数void search(struct book *p,int n,char *c)在图书数组中查找该书名是否存在,如果存在,显示出该书的价格,否则显示“No found”。#include
2
教材第9章P233课后习题题三(1):时间换算问题。#include
3
教材P233第9章课后习题题三(2):复数的乘积运算。#include
1
通过调用一个用递归方式实现的求整数n的阶乘函数double fac(int n),计算并输出从1到n的阶乘之和,即s=1!+2!+…+n!,n的值从键盘输入(n<11)。#include
2
从键盘输入一个十进制正整数n,通过调用一个递归函数int order(int n)实现对整数n按位顺序输出。#include
3
按以下所给的公式计算并输出组合数:
要求:
①分别编写一个求阶乘n!的函数int fac(int n)、一个求组合数函数int cnm(int n,int m);
②编写主函数,由键盘输入n和m(n不得小于m,否则显示“input error”),通过嵌套调用①中的函数完成计算。#include
4
教材P262第10章课后习题题三(6):递归方法求Fibonacci数列第n项。#include
5
教材P262第10章课后习题题三(7):递归方法实现十进制显示为二进制形式。#include
1
输入两个字符串,通过调用自定义函数char *strcat(char *s,char *t)将两个字符串连接,输出连接后的字符串。#include
2
从键盘输入n个字符串(n的值由键盘输入,n<11),用选择排序法对这些字符串按其值的升序进行排序,输出排序后的各个字符串。#include
3
用一个指针数组将表示星期的7个英文单词组织起来;任意输入一个字符串,在表中查找,若存在,则输出该字符串在表中的序号,否则输出-1。#include
4
输入整数n及n个字符串,试将这些字符串按照长度的升序排列并显示出来。#include
5
输入一个字符串后再输入两个字符,输出此字符串中从与第1 个字符匹配的位置开始到与第2 个字符匹配的位置结束的所有字符。例如,输入字符串“program”与2 个字符’r’和’g’后,输出”rog”。#include