资源描述
1. 请编写一个函数fun,它的功能是:输入一个整数,判断该整数是否为素数。如果是素数,则输出1,如果是非素数,则输出0.
程序输出后,如果输入5,则输出x=5,x is a prime number,1
#include <stdio.h>
#include <math.h>int fun ( int t){int i,k;
k=(int)sqrt(t);
for(i=2;i<=k;i++)
if(t%i==0) break;
if(i>k) return 1;
else return 0;
}
void NONO ()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *fp, *wf ;
inti ;int x ;
fp = fopen("BC365.IN","r");if(fp == NULL) {
printf("数据文件BC365.IN不存在!");
return ;
}
wf = fopen("bc365.out","w");
for(i = 0 ; i< 3 ; i++) {fscanf(fp, "%d", &x);
fprintf(wf, "%d\n", fun(x));
}
fclose(fp) ;
fclose(wf) ;}
main( ){ int x;
printf("Input x:");
scanf("%d",&x); printf("\nx = %d, x is a prime number,%d\n", x, fun(x));NONO();
}
2. 请编写一个函数fun,它的功能是:利用选择排序法对一个数组中的十个整数从小到大排序。
#include <stdio.h>
#include <math.h>
void fun ( int x[],intnum)
{ int i,j,t;
for(j=0;j<num-1;j++)
for(i=j+1;i<num;i++)
if(x[i]<x[j])
{t=x[i];x[i]=x[j];x[j]=t;}
}
void NONO ()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp, *wf ;
inti ;
int x ;
int b[10];
fp = fopen("bc366.in","r");
if(fp == NULL) {
printf("数据文件bc366.in不存在!");
return ;
}
wf = fopen("bc366.out","w");
for(i = 0 ; i< 10 ; i++) {
fscanf(fp, "%d", &x);
b[i]=x;
}
fun(b,10);
for(i = 0 ; i< 10 ; i++) {
fprintf(wf, "%d\n",b[i]);
}
fclose(fp) ;
fclose(wf) ;
}
main( )
{ inti,a[10];
printf("Input array a:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
fun(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
NONO();
3.请编写一个函数fun,它的功能是:输入一个百分制成绩score,用switch语句输出该成绩对应的等级:90<score<100,等级为 A, 80<score<89,等级为 B, 70<score<79,等级为 C, 60Wscore<69,等级为 D, score<60,等级为 E。
程序运行后,如果输入65,则输出为:grade=D
#include <stdio.h>
#include <math.h>
char fun ( float s)
{int r;
char ch;
r=(int)s/10;
switch(r)
{
case 10:
case 9:ch='A';break;
case 8:ch='B';break;
case 7:ch='C';break;
case 6:ch='D';break;
default:ch='E';
}
return(ch);
}void NONO ()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp, *wf ;
inti ;
int x ;
fp = fopen("bc371.in","r");
if(fp == NULL) {
printf("数据文件bc371.in不存在!");
return ;
}
wf = fopen("bc371.out","w");
for(i = 0 ; i< 5 ; i++) {
fscanf(fp, "%d", &x);
fprintf(wf, "%c\n", fun(x));
}
fclose(fp) ;
fclose(wf) ;
}
main()
{ float score;
printf("Input score:\n");
scanf("%f",&score);
printf("\ngrade = %c\n", fun(score));
NONO();
}
4.请编写一个函数str_cat,它的功能是:将两个字符串str1和str2连接起来,其中,连接后的 str1 和 str2 间加一个空格。如 str1 %"China”,str2 为“Nanjing”,调用 str_cat 后,str1为“China Nanjing”。
不允许使用strcat函数。
#include <stdio.h>
#include <string.h>
int str_cat ( char x[],char y[])
{int i,j,k;
j=strlen(x);
k=strlen(y);
x[j]=' ';
for(i=0;i<k;i++)
x[j+1+i]=y[i];
}
void NONO ( )
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp, *wf ;
char string1[20],string2[10];
intlen;
fp = fopen("bc372.in","r");
if(fp == NULL) {
printf("数据文件bc372.in不存在!");
return ;
}
wf = fopen("bc372.out","w");
// for(i = 0 ; i< 2 ; i++) {
fgets( string1,20,fp);
len=strlen(string1);
string1[len-1]='\0';
fgets(string2,10,fp);
len=strlen(string1);
string1[len-1]='\0';
str_cat(string1,string2);
fputs(string1,wf);
// }fclose(fp);fclose(wf);
}
main()
{
char str1[20]="China",str2[10]="Nanjing";
str_cat (str1,str2);
puts(str1);
NONO();
}
5.请编写一个函数fun,它的功能是:用递归函数调用方法,对主函数main传来的参数计算阶乘。
程序运行后,如输入5,输出为:120.
#include <stdio.h>
#include <math.h>int fun (int t){long m;
if(t==0||t==1) m=1;
if(t>1) m=t*fun(t-1);return m;
}
void NONO ()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *fp, *wf ;
inti ;
int x ;
fp = fopen("bc367.in","r");
if(fp == NULL) {
printf("数据文件bc367.in不存在!");
return ;
}
wf = fopen("bc367.out","w");
for(i = 0 ; i< 3 ; i++) {fscanf(fp, "%d", &x);
fprintf(wf, "%d\n", fun(x));
}fclose(fp) ;
fclose(wf);
}main()
{int x;
printf("Input x:");
scanf("%d",&x); printf("\nx = %d, factorial of x is:%d\n", x, fun(x));
NONO();
}
6.请编写一个函数character_count,它的功能是:统计并输出字符串中的数字、字母、空格及其他字符个数。如输入“ AbbcD12 3”,则输出:
3
5
2
0
#include <stdio.h>
#include <string.h>
intcharacter_count ( char x[],int y[])
{ int len=strlen(x);char t;int i;
for(i=0;i<len;i++)
(
t=x[i];
if ((t>='A' && t<='Z') || (t>='a' && t<='z'))
y[1]++;
else if (t>='0' && t<='9')
y[0]++;
else if (t=='')
y[2]++;
else y[3]++;
}
}
void NONO ( )
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp, *wf ;
char string1[80];
inti,t[4]={0};
fp = fopen("bc373.in","r");
if(fp == NULL) {
printf("数据文件bc373.in不存在!");
return ;
}
wf = fopen("bc373.out","w");
fgets( string1,80,fp);
character_count(string1,t);
for(i=0;i<4;i++)
fprintf(wf, "%d\n",t[i]);
fclose(fp);
fclose(wf);
}
main()
{
char str1[80];
inti,coun[4]={0};//coun数组元素用于存放strl字符串中各符号的个数,coun[0]、
coun[1]、coun[2]、coun[3]分别存放数字、字母、空格及其他字符的个数
printf("enter a line of characters:\n");
gets(strl);
character_count(str1,coun);
for(i=0;i<4;i++)
printf("%d\n",coun[i]);
NONO();
}
7. 请编写一个函数fun,它的功能是:用冒泡排序法对一个数组中的整数从小到大排序。
#include <stdio.h>
#include <math.h>
void fun ( int x[],int num)
{ int i,j,t;
for(j=0;j<num-1;j++)
for(i=0;i<num-j;i++)
if(x[i]>x[i+1])
{t=x[i];x[i]=x[i+1];x[i+1]=t;}
}
void NONO ( )
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp, *wf ;
inti ;
int x ;
int b[10];
fp = fopen("bc368.in","r");if(fp == NULL) {printf("数据文件bc368.in不存在!");
return ;
}
wf = fopen("bc368.out","w");
for(i = 0 ; i< 10 ; i++) {
fscanf(fp, "%d", &x);
b[i]=x;
}
fun(b,10);
for(i = 0 ; i< 10 ; i++) {
fprintf(wf, "%d\n",b[i]);
}
fclose(fp);
fclose(wf);
}
main()
{ inti,a[10];
printf("Input array a:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
fun(a,10);
for(i=0;i<10;i++)
printf("%4d",a[i]);
NONO();
}
8. 请编写一个函数reverse,它的功能是:将一个数组逆序存放。要求采用数组名作为函数参数传递,不允许重新申请内存空间用于存放逆序后的结果。
在主函数中输入十个元素到整型数组
#include <stdio.h>
#include <math.h>
void reverse ( int x[],int m)
{int j,temp;
for(j=0;j<(m/2);j++)
{temp=x[j];x[j]=x[m-1-j];x[m-1-j]=temp; }
}
void NONO ( )
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp, *wf;
int x[12];
inti ;
fp = fopen("bc370.in","r");
if(fp == NULL) (
printf("数据文件bc370.in不存在!");
return ;
}
wf = fopen("bc370.out","w");
for(i = 0 ; i< 12 ; i++)
fscanf(fp, "%d", &x[i]);
reverse(x,12);
for(i = 0 ; i< 12 ; i++)
fprintf(wf, "%d\n",x[i]);
fclose(fp);
fclose(wf);
}
main()
{ inti,a[10];
printf("enter array a:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
reverse(a,10);
〃输出逆序后的数组
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
NONO();
}
9. 请编写一个函数bin_search,它的功能是:有一个从小到大排列的一维数组,大小为20,输入一个数,用二分查找法判断该数组中是否有这个数,若有,则输出该数在数组中的下标(数组下标从0开始),若无,输出-1.
#include <stdio.h>
#include <math.h>
intbin_search ( int x[],int m, int key)
{
int i=0,j=m-1,mid;
while(i<=j)
{ mid=(i+j)/2;
if(key>x[mid]) i=mid+1;
else if(key<x[mid]) j=mid-1;
else return mid;
}
return -1;
}void NONO ()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *fp1, *fp2,*wf ;
int a[20]={0},b[10]={0};
inti ;
int t=0;
fp1 = fopen("bc369-1.in","r");
if(fp1 == NULL) {
printf("数据文件 bc369-1.in 不存在!");
return ;
}
fp2 = fopen("bc369-2.in","r");
if(fp2 == NULL) {
printf("数据文件 bc369-2.in 不存在!");
return ;
}
wf = fopen("bc369.out","w");
for(i = 0 ; i< 18 ; i++) {
fscanf(fp1, "%d", &a[i]);
}
for(i = 0 ; i< 10 ; i++) {
fscanf(fp2, "%d", &b[i]);
}
for(i = 0 ; i< 10 ; i++)
{
t=bin_search(a,18,b[i]);
fprintf(wf, "%d\n",t);
}
fclose(fp1) ;
fclose(fp2);
fclose(wf) ;
}
main( )
{ int t=0,n,a[20]={1,3,5,8,12,23,34,37,38,40,42,48,50,57,60,63,69,75,80,84};
printf("enter a number:\n");
scanf("%d",&n);
〃当x存在于数组a中时,t值为1, x不存在与数组a中时,t值为0t=bin_search (a,20,n);
if(t>=0)
printf("n exists in array a,the position of n is:%d\n",t);
else if(t==-1)
printf("-1\n");
NONO();
}
10. 最大公约数:
int gys(int m,int n)
{int x,i,t, k;
for(i=1;i<=m&&i<=n;i++)
if(m%i==0&&n%i==0)
t=i
;return t;
}
最小公倍数:
int gys(int m,int n)
{int x,t,j;
if(m>n)t=m;
else t=n;
for(j=t;!(j%m==0&&j%n==0);j++);
return j;
}
展开阅读全文