1. 设有-11,-9,0,3,5,6,8,12,15,21十个数,请编程从键盘上输入这十个数,并计算能够被3整除的数的平均值。
2. 从键盘输入十个浮点数,保存到数组中,然后计算并且输出数组的各元素的平均值。
3. 编写程序,统计输入字符串中数字、字母和其他字符的个数。
4. 要某歌星大奖赛中,有10个评委为10个选手打分(最高分为10分),选手最后得分为:去掉1个最高分和1个最低分后的评分。
(1)输入10个选手的评分。
(2)求每个选手平均分(去掉1个最高分和1个最低分)
(3)按平均分从高到低分排序。
(4)按名次输出。
5.编写程序,它的功能是只将小写字母转化成大写字母输出,其他字母保持不变原样输出。
2.编一个求素数的函数,在主函数中将100到200之间的所求的所有素数以ASCII码的形式写到c盘根目录下ss.dat文件中。
3.对任意一个3行3列的二维整型数组,编程实现:
(1)从键盘对数组元素赋初值。
(2)查找每一列中元素值最大的元素并输出其值及行下标和列下标。
(假设数组中各元素值都不相同)
4.编写字符串拷贝函数将指针str2指向的字符串复制到由指针str1所指的字符串中。请在主函数中调用字符串拷贝函数并输出str1指向的字符串。
(不得用C中的strcpy标准库函数)
5.要某歌星大奖赛中,有10个评委为10个选手打分(最高分为10分),选手最后得分为:去掉1个最高分和1个最低分后的评分。
1、输入10个选手的评分。
2、求每个选手平均分(去掉1个最高分和1个最低分)
3、按平均分从高到低分排序。
4、按名次输出。
6.对下面的3行3列的二维整型数组x:
int x[3][3]={1,2,3,4,5,6,7,8,9};
编程求每一行中元素的累加和并输出之。
7.从键盘输入一些字符,逐个把它们送到磁盘上并统计这些字符的个数,直到输入一个“#”为止。设磁盘ASCII码文件名为ab.txt。
8.若有n行n列数组,试编写一程序,分别求出两条对角线元素之和。(从键盘输入n*n个整型数,n≤20)
9.若在c://tclt路径下有一个名为zz.dat的文本文件,它包括10个按升序排列的整数,且每两个数之间用逗号隔开,现要插入一个整数使该序列仍保持升序,并把新序列写入到c://tclt路径下名为zzz.dat的文本文件中。
10.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
11.编一函数prime(int n),判断n是否素数,若是返回″1″,否则,返回″0″;
在主函数中,把3——100之间的所有孪生素数存入文件″file.dat″。
注:孪生素数是指它们的差是2的二个素数.
如:5,7;11,13是孪生素数,而13,17不是
12.编程求解水仙花数。如:
13.从键盘输入一个四位整数,把该整数颠倒过来输出。
14.求100~300之间的全部素数(只能被1和本身整除的数)
15.冒泡法对10个整数的数组进行排序,并且求出其中的最大值和最小值。
16.编程实现二维数组的转置。
17.任意输入三行字符,统计每行的字母、数字和其他字符的个数。
18.任意输入20个整数,计算:正数的个数和正数和;负数的个数和负数的和。
19.求任意一个二维矩阵的周边元素和。
20.编程实现n!(n=12)。
21.从键盘输入一串字符串,写入文本文件”abc.txt”中将文本文件内容输出显示在屏幕上。
22.编程建立数据文件”cj.dat”,内容为:80,90,72,64,59,92。用文件操作读入文件的数据,求出其中的最大值和最小值。将结果保存在文件”jg.dat”中,并且显示出来结果。
23.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。)
main()
{int i,j,k;
printf("/n");
for(i=1;i<5;i++) /*以下为三重循环*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{ if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
printf("%d,%d,%d/n",i,j,k);
}}
24.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果。)程序源代码:
#include "math.h"
main()
{ long int i,x,y,z;
for (i=1;i<100000;i++)
{ x=sqrt(i+100); /*x为加上100后开方后的结果*/
y=sqrt(i+268); /*y为再加上168后开方后的结果*/
if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
printf("/n%ld/n",i); }}
25. 编一个函数fun(char *s),函数的功能是把字符串中的内容逆置:例如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba
试题程序: #include <string.h>
#include <conio.h>
#include <stdio.h>
#define N 81
/*注:该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次都进行两字符的位置对换,直到中间字符(s+i<s+n-1-i来控制):由于s+i中一个地址,因此要注意把它的内容取出再进行换位:即先进行取内容运算* */
fun(char *s)
{ int i=0,t,n=strlen(s);
for(;s+i<s+n-1-i;i++)
{t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;} }
main()
{ char a[N];
clrscr();
printf("Enter a string:"); gets(a);
printf("The original string is:");puts(a);
fun(a);
printf("/n");
printf("The string after modified:");
puts(a);
}
26. 编写函数fun,函数的功能是:从字符串中删除指定的字符:同一字母的大、小写按不同字符处理:若程序执行时,输入字符串为:turbo c and Borland c++从键盘上输入字符:n,则输出后变为:turbo c ad borlad c++如果输入的字符串不存在,则字符串照原样输出:
试题程序:
#include <stdio.h>
#include <conio.h>
/*注:该题的算法是让i控制一个一个字符往后走,在移动过程中如果s[i]不是要删的字符,则将其按顺序放到新串中(新串亦是用s来做,只是用k来控制新串的下标,由于要删除一些元素,因此新串的下标总是比原下标i要慢:因而可用此法即同一字符串变量的方法:*/
int fun(char s[],int c)
{int i,k=0;
for(i=0;s[i];i++)
if(s[i]!=c) s[k++]=s[i];
s[k]='/0';
}
main()
{ static char str[]="turbo c and borland c++";
char ch;
clrscr();
printf(" :%s/n",str);
printf(" :");
scanf("%c",&ch);
fun(str,ch);
printf("str[]=%s/n",str);
}
27. 编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat)例如,分别输入下面两个字符串:FirstSrting—、SecondString程序输出:FirstString—SecondString
试题程序:
#include<stdio.h>
#include<conio.h>
/* 注:第一个for()循环用于让i成为第一个字符串的结束符的下标,要注意在这个for()后要有一个分号否则出错:第二个for()的作用是将第二个字符串一个一个字符依次放到第一个字符串的未尾:此外,还要注意最后一定要有p1[i]='/0';来给字符串加上结束符:*/
void fun(char p1[],char p2[])
{int i,j;
for(i=0;p1[i];i++);
for(j=0;p2[j];j++)
p1[i++]=p2[j];
p1[i]='/0';
}
main()
{ char s1[80],s2[80];
clrscr();
printf("Enter s1 and s2:/n");
scanf("%s%s",s1,s2);
printf("s1=%s/n",s1);
printf("s2=%s/n",s2);
printf("Invoke fun(s1,s2):/n");
fun(s1,s2);
printf("After invoking:/n");
printf("%s/n",s1); }
28. 请编一个函数fun(char *s),函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后:例如:原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZM:
试题程序:
#include "conio.h"
#include "stdio.h"
#define N 81
/* 注:该题要先将字符串的头元素存到某一变量(用c=*s)中,然后后面的字符依向前移(用for()循环),要记得在串的未尾加一个结束符:*/
fun(char *s)
{ char c=*s;
for(;*(s+1);s++)
*s=*(s+1);
*s=c;
*(s+1)='/0';}
main()
{ char a[N];
clrscr();
printf("enter a string:");
gets(a);
printf("the original string is:");
puts(a);
fun(a);
printf("the string after modified:");
puts(a);
}
39、请编写一个函数void fun(char a[],int k,int n),其功能是:删除字符串中指定
下标开始的n 个字符:其中,a指向字符串,k中存放指定的下标:
例如,字符串内容为:Hellollo World!,k中值为:5,n中的值为:3,则调用该函数的
结果为:Hello World!:
注意:部分源程序给出如下:
请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写
的若干语句:
试题程序:
#include <stdio.h>
#define N 80
/*本题要删除从下标k开始的后n个字符:所以所用的算法是将下标为k+n及以后
的所有字符依次往前移n个字符,这样就把要删除的字符覆盖了(即删除了):记得最后
要在新串尾加一个结束符'/0':*/
void fun( char *a, int k, int n)
{ int m=strlen(a),i;
for(i=k+n; i<m; i++) a[k++]=a[i];
a[k]='/0';
}
main()
{ char s[N]="Hellollo World!";
int k,n;
printf("/n the original string: %s/n", s);
printf(" enter index---------------k: "); scanf("%d"
, &k);
printf(" enter number to delete----n: "); scanf("%d"
, &n);
fun(s,k,n);
printf("/n the string after deleted: %s/n", s);
}