资源描述
//已知下面的程序是输入一个整数,判断该整数的位数,并依次输出各位数字。请将程序补充完整。
#include <stdio.h>
main()
{ long num;
int a[10],i=0;
scanf("%ld",&num);
while(num!=0)
{ a[i]=num%10;
num=num/10;
i++;
}
printf("this number is %d wei shu.\n",i);
for(i--;i>=0;i--)
printf("%d",a[i]);
}
//2. 输入10名学生的C语言成绩,并将成绩排序。
#include <stdio.h>
main()
{
int grade[10]={78,89,56,98,74,68,23,56,68,75};
int i,j;
int temp;
//for(i=0;i<10;i++)
//scanf("%d",&grade[i]);
for(i=0;i<10-1;i++)
for(j=i+1;j<10;j++)
if(grade[i]<grade[j])
{
temp=grade[i];
grade[i]=grade[j];
grade[j]=temp;
}
for(i=0;i<10;i++)
printf("%6d",grade[i]);
printf("\n");
}
//3. 从键盘上输入10个整数,并放入一个一维数组中,
//然后将其逆序重新存放。
//即:第1个元素和第10个元素互换,第2个元素和第9个元素互换……分别输出数组原来的值和兑换后各元素的值。
#include <stdio.h>
#define N 10
main()
{
int number[10]={78,89,56,98,74,66,23,58,68,75};
int temp;
int i;
for(i=0;i<N/2;i++)
{
temp=number[i];
number[i]=number[N-i-1];
number[N-i-1]=temp;
}
for(i=0;i<N;i++)
printf("%6d",number[i]);
printf("\n");
}
//4. 计算一个4×4矩阵两个对角线之和
#include <stdio.h>
#define M 4
#define N 4
main()
{
int a[M][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int i,j;
int sum=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
if (i==j||i+j==M-1)
sum=sum+a[i][j];
}
printf("sum=%d\n",sum);
}
//随机产生20个[45,210]范围内的正整数,实现以下功能:
//a) 求最大值、最小值和平均值。
//b) 求小于平均值的数据的个数。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define N 20
main()
{
int a[N];
int i;
int max,min,sum=0;
float avg;
int count=0;
srand(time(NULL)); /*初始化随机因子*/
for(i=0;i<N;i++)
a[i]=rand()%(210-45+1)+45; /*生成45~210之间的整数*/
max=a[0];
min=a[0];
for(i=0;i<N;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
sum=sum+a[i];
}
avg=(float)sum/N;
printf("生成的20个随机数为:\n");
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
if((i+1)%10==0)
printf("\n");
}
printf("最大值为:%d;最小值为:%d;平均值为:%f;\n",max,min,avg);
for(i=0;i<N;i++)
{
if(a[i]<avg)
count++;
}
printf("小于平均值的数据个数为:%d\n",count);
}
//下面程序的功能是对两个字符串进行比较,
//然后输出两个字符串中第一个不相同字符的ASCII码之差。
//例如:输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。
#include <stdio.h>
main()
{
char str1[100],str2[100];
int i,s;
printf("Enter string 1: ");
gets(str1);
printf("Enter string 2: ");
gets(str2);
i=0;
while((str1[i]==str2[i] && str1[i]!='\0'))
i++;
s=str1[i]-str2[i];
printf("%d\n", s);
}
//编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。
//不用strcpy函数。复制时'\0'也要复制过去,'\0'后面的字符不复制。
#include <stdio.h>
main()
{
char s1[100],s2[100];
int i;
printf("Enter string 1: ");
gets(s1);
i=0;
while((s1[i]!='\0'))
{ s2[i]=s1[i];
i++;
}
s2[i]=s1[i];
printf("s2=%s\n", s2);
}
//输入若干个字符串(最多10个),
//求出每个字符串的长度,并打印最长字符串的内容。
//以"stop"作为输入的最后一个字符串。
//输入若干个字符串(最多10个),
//求出每个字符串的长度,并打印最长字符串的内容。
//以"stop"作为输入的最后一个字符串。
#include <stdio.h>
#include <string.h>
main()
{
char str[10][100];
int i=0,k;
int max_len,max_pos;
gets(str[i]);
max_len=strlen(str[i]);
max_pos=0;
while(i<10&&strcmp(str[i],"stop")!=0) {
i++;
gets(str[i]);
}
for(k=0;k<i;k++)
{
printf("第%d字符串长度为%d\n",k+1,strlen(str[k]));
if((int)strlen(str[k])>max_len)
{
max_len=strlen(str[k]);
max_pos=k;
}
}
printf("最长字符串的内容为:%s\n",str[max_pos]);
}
//输入若干个字符串(最多10个),
//求出每个字符串的长度,并打印最长字符串的内容。
//以"stop"作为输入的最后一个字符串。
#include <stdio.h>
#include <string.h>
main()
{
char str[10][100];
int i=0;
int max_len,max_pos;
gets(str[i]);
max_len=strlen(str[i]);
max_pos=0;
while(i<10&&strcmp(str[i],"stop")!=0)
{
printf("第%d字符串长度为%d",i+1,strlen(str[i]));
if((int)strlen(str[i])>max_len)
{
max_len=strlen(str[i]);
max_pos=i;
}
i++;
gets(str[i]);
}
printf("最长字符串的内容为:%s",str[max_pos]);
}
实验6—4
#include <stdio.h>
main()
{
char str[]="AbcDEfg";
int k=0;
printf("转换前的字符串为:%s\n",str);
while(str[k]!='\0')
{
if(str[k]>='a'&&str[k]<='z')
str[k]=str[k]-32;
else if(str[k]>='A'&&str[k]<='Z')
str[k]=str[k]+32;
k++;
}
printf("转换前的字符串为:%s\n",str);
}
实验7—1—2
#include <stdio.h>
int sub(int n)
{
return (n/10+n%10);
}
main()
{
int x,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
实验7—1—1
#include <stdio.h>
fun (int x)
{ int p ;
if (x==0 || x==1 ) return (3) ;
p=x-fun (x-2) ;
return p ;
}
main()
{ printf("%d \n",fun(9));
}
//2. 写一个判素数的函数int isprime(int a){……},
//在主函数输入一个整数,并调用isprime函数,输出是否为素数的信息。
#include <stdio.h>
#include <math.h>
int isprime(int a);
main()
{
int n;
scanf("%d",&n);
if(isprime(n)==1)
printf("%d是一个素数!\n",n);
else
printf("%d不是一个素数\n!",n);
}
int isprime(int a)
{
int k;
for(k=2;k<=sqrt(a);k++)
if(a%k==0) return 0;
return 1;
}
//3.用递归方法求n阶勒让德多项式的值,递归公式为:
#include <stdio.h>
float p(float x,int n);
main()
{
float x;
int n;
printf("请输入x,n:<x n>:\n");
scanf("%f%d",&x,&n);
printf("p(%f,%d)=%f\n",x,n,p(x,n));
}
float p(float x,int n)
{
if (n==0)
return 1;
else if(n==1)
return x;
else
return ((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-1))/n;
}
//4. 编写一函数,计算任一输入的整数的各位数字之和。
//主函数包括输入输出和调用该函数。
#include <stdio.h>
int sum_digit(int n);
main()
{
int num;
printf("请输入一个整数:\n");
scanf("%d",&num);
printf("%d的各位数字之和为%d\n",num,sum_digit(num));
}
int sum_digit(int n)
{
int temp_sum;
temp_sum=n%10;
while(n/10!=0)
{
n=n/10;
temp_sum=temp_sum+n%10;
}
return temp_sum;
}
//1. 编写将n个数从小到大排序的函数,
//要求该函数返回排序过程中交换的次数,并设计main函数,验证算法正确与否。
//int sort( int arr[], int n) {……….}
#include <stdio.h>
int sort(int arr[],int n);
main()
{
int a[10]={10,9,8,7,6,5,4,3,2,1};
int k;
printf("初始序列为:\n");
for(k=0;k<10;k++)
printf("%5d",a[k]);
printf("\n");
printf("将序列按从小到大顺序排序,经过%d次变换后,序列为:\n",sort(a,10));
for(k=0;k<10;k++)
printf("%5d",a[k]);
printf("\n");
}
int sort(int arr[],int n)
{
int i,j;
int temp;
int count=0;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
count++;
}
}
return count;
}
//2. 写一函数 void strcat_stu(char s1[41],char s2[20]){……….},
//将两个字符串连接,并设计main函数,验证算法正确与否。
#include <stdio.h>
#include <string.h>
void strcat_stu(char s1[41],char s2[20])
{
int k=0,m=0;
while(s1[k]!='\0')
k++;
while(s2[m]!='\0')
{
s1[k]=s2[m];
m++;
k++;
}
s1[k]='\0';
}
main()
{
char str1[41],str2[20];
strcpy(str1,"abcdefg");
strcpy(str2,"123456");
strcat_stu(str1,str2);
printf("%s\n",str1);
}
#include <stdio.h>
f( int a)
{
int b=0;
static int c = 3;
b++;c++;
return(a+b+c);
}
实验8—3
main()
{
int a = 1, i;
for(i=0;i<3;i++)
printf("%d\n",f(a));
}
//4. 输入10个学生5门课的成绩,分别用函数实现下列功能:
//(1) 计算每个学生的平均分。
//(2) 计算每门课的平均分。
//(3) 找出所有50个分数中最高的分数所对应的学生和课程;
//(4) 计算平均分方差
#include <stdio.h>
main()
{
float grade[10][5]={{78,89,76,98,87},{79,83,79,92,85},
{72,81,79,91,86},{75,84,71,95,81},
{71,84,71,92,84},{78,86,72,93,82},
{75,86,73,93,88},{76,87,73,95,83},
{79,84,75,94,89},{72,89,74,98,84},};
float average[10],total[10];
float average_course[5],total_course[5];
int i,j;
float max_grade;
int max_course,max_stu;
float f1=0,f2=0,variance;
printf("---------------计算每个学生的平均分----------------------\n");
for(i=0;i<10;i++)
{
total[i]=0;
for(j=0;j<5;j++)
{
total[i]=total[i]+grade[i][j];
}
average[i]=total[i]/5;
}
for(i=0;i<10;i++)
printf("第%d个学生的平均分为%5.2f\n",i+1,average[i]);
printf("\n----------------计算每门课的平均分-----------------------\n");
for(i=0;i<5;i++)
{
total_course[i]=0;
for(j=0;j<10;j++)
total_course[i]+=grade[j][i];
average_course[i]=total_course[i]/10;
}
for(i=0;i<5;i++)
printf("第%d门课程的平均分为%5.2f\n",i+1,average_course[i]);
printf("\n---------找出所有50个分数中最高的分数所对应的学生和课程-----------\n");
max_grade=grade[0][0];
max_stu=0;
max_course=0;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(max_grade<grade[i][j])
{
max_grade=grade[i][j];
max_stu=i;
max_course=j;
}
printf("50个分数中第%d个学生的第%d门课程分数最高,最高分为%5.2f\n",max_stu+1,max_course+1,max_grade);
printf("\n-------------------计算平均分方差----------------------\n");
for(i=0;i<10;i++)
{
f1=f1+average[i]*average[i];
f2=f2+average[i];
}
variance=f1/10-(f2/10)*(f2/10);
printf("平均分方差为:%8.4f\n",variance);
}
实验9—1—1
#include "stdio.h"
void sub(int x, int y,int *z)
{
*z=y-x;
}
main()
{
int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
实验9—1—2
#include "stdio.h"
main()
{
int a[]={2,4,6,8,10}, y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf("%d\n",y);
}
//定义函数void f(float x,int *y,float *z),
//将x的整数部分存于y所指存储单元,
//将x的小数部分存于z所指存储单元。
//并设计main函数,验证算法正确与否。
#include <stdio.h>
void f(float x,int *y,float *z)
{
*y=(int)x;
*z=x-*y;
}
main()
{
float x;
int y;float z;
scanf("%f",&x);
f(x,&y,&z);
printf("%f的整数部分为:%d,小数部分为:%f\n",x,y,z);
}
//下面程序实现从10个数中找出最大值和最小值。
//请补充程序完整。
#include <stdio.h>
int max, min;
find_max_min(int *p, int n)
{
int *q;
max=min=*p;
for(q=p;q<p+n;q++)
if( *q>max ) max=*q;
else if ( *q<min) min=*q;
}
void main( )
{
int i,num[10]={12,45,78,485,78,25,-78,69,45,-789};
//for(i=0; i<10; i++)
//scanf("%d",&num[i]);
find_max_min(num,10);
printf("max=%d,min=%d\n",max,min);
}
//4. 输入10个整数,将其中最小的数与第一个数对换,
//把最大的数与最后一个数对换。模仿第2题使用指针实现。
//写3个函数:①输入10个数。②进行处理。③输出10个数。
#include <stdio.h>
#define N 10
void input_data(int a[],int n);
void printf_data(int a[],int n);
void deal_data(int a[],int n);
void swap(int *m,int *n);
main()
{
int a[N];
input_data(a,N);
deal_data(a,N);
printf_data(a,N);
}
void input_data(int a[],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
void printf_data(int a[],int n)
{
int i;
for (i=0;i<n;i++)
printf("%6d",a[i]);
}
void deal_data(int a[],int n)
{
int i;
int min_pos=0,max_pos=0;
for(i=0;i<10;i++)
{
if(a[i]>a[max_pos])
max_pos=i;
if(a[i]<a[min_pos])
min_pos=i;
}
swap(&a[min_pos],&a[0]);
swap(&a[max_pos],&a[N-1]);
}
void swap(int *m,int *n)
{
int temp;
temp=*m;
*m=*n;
*n=temp;
}
//以下dele()函数的功能是删除字符串s中的所有数字字符。
//请补充完整dele()函数。
//编写main(),在主函数中输入一个字符串,
//通过调用dele函数,删除其中的数字字符,并输出结果。
#include <stdio.h>
void dele(char *s)
{ int n=0,i;
for(i=0;s[i];i++)
if(!(s[i]>='0'&&s[i]<='9')) //或者 if((s[i]<'0'||s[i]>'9'))
s[n++]=s[i];
s[n]='\0';
}
main()
{
char s[100];
gets(s);
dele(s);
printf("%s\n",s);
}
//写一函数,求一个字符串的长度,
//并编写main()函数。即自己写一个strlen()函数,
//函数原型为:int strlen_stu(char *s);
#include <stdio.h>
int strlen_stu(char *s)
{
int len=0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
main()
{
char s[100];
gets(s);
printf("lengths of %s is %d\n",s,strlen_stu(s));
}
//输入一行文字,找出其中大写字母、小写字母、空格、数字及其他字符的个数。
//提示:将这5个表示统计个数的变量定义为全局变量,
//定义一个进行统计的函数:void Statistics(char *str){…..},
//在Statistics函数中对这5个全局变量进行计算赋值,在main函数中输出结果。
#include <stdio.h>
int upper_char=0;
int lower_char=0;
int space_char=0;
int digital_char=0;
int other_char=0;
void Statistics(char *str)
{
while(*str!='\0')
{
if(*str>='A'&&*str<='Z')
upper_char++;
else if(*str>='a'&&*str<='z')
lower_char++;
else if(*str==' ')
space_char++;
else if(*str>='0'&&*str<='9')
digital_char++;
else
other_char++;
str++;
}
}
main()
{
char s[100];
gets(s);
Statistics(s);
printf("upper_char=%d\n",upper_char);
printf("lower_char=%d\n",lower_char);
printf("space_char=%d\n",space_char);
printf("digital_char=%d\n",digital_char);
printf("other_char=%d\n",other_char);
}
实验10—4
#include <stdio.h>
cut(char *s,int m,int n)
{
int i;
for(i=0;i<n;i++) s[i]=s[i+m];
s[i]='\0';
}
void main()
{
char str[3][20],*p[3];
int i;
printf("请您输入三个长度超过5个字符的字符串:\n");
for(i=0;i<3;i++){ p[i]=str[i]; gets(p[i]); }
for(i=0;i<3;i++) cut(p[i],i,5);
for(i=0;i<3;i++) puts(str[i]);
}
//用结构体存放如下表中的数据,
//然后输出每个人的姓名和实发工资(实发工资=基本工资+浮动工资-支出)
//姓名 基本工资 浮动工资 支出
//Tom 1240.00 800.00 75.00
//Lucy 1360.00 900.00 50.00
//Jack 1560.00 1000.00 80.00
#include <stdio.h>
#define N 3
struct salary
{
char name[10];
float base_salary;
float float_salary;
float expenditure;
};
struct salary Workers[N]={{"Tom",1240,800,75},{"Lucy",1360,900,50},{"Jack",1560,1000,80}};
main()
{
int i;
printf("\t姓名\t\t基本工资\t浮动工资\t支 出\n");
for(i=0;i<3;i++)
printf("\t%s\t\t%8.2f\t%8.2f\t%6.2f\n",Workers[i].name,Workers[i].base_salary,Workers[i].float_salary,Workers[i].expenditure);
printf("--------------------------------------------------------\n");
printf("\t姓名\t\t实发工资\n");
for(i=0;i<3;i++)
printf("\t%s\t\t%8.2f\n",Workers[i].name,Workers[i].base_salary+Workers[i].float_salary-Workers[i].expenditure);
}
//定义一个结构体变量(包括年、月、日),
//计算该日在本年中是第几天,注意闰年的问题。
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
int month_days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
main()
{
struct date date_value;
int i;
int day_count=0;
printf("请输入年月日(year,month,day)\n");
scanf("%d,%d,%d",&date_value.year,&date_value.month,&date_value.day);
for(i=1;i<date_value.month;i++)
day_count+=month_days[i];
day_count+=date_value.day;
if(date_value.year%4==0&&date_value.year%100!=0||date_value.year%400==0)
if(date_value.month>2)
day_count++;
printf("%d年%d月%d日是该年的第%d天\n",date_value.year,date_value.month,date_value.day,day_count);
}
//编写程序,输入10个学生的学号、姓名、性别、年龄,
//统计其中女生有多少,男生有多少,
//并根据年龄从小到大对这10个学生重新排序。
#include <stdio.h>
#include <string.h>
#define N 10
struct student
{
char stuNo[10];
char name[10];
char xb[3];
int age;
};
struct student stu[N]={{"20100080","关桂凯","男",20},
{"20100081","曾刚","男",19},
{"20100082","李新亮","男",21},
{"20100083","李妍","女",21},
{"20100084","段艳娇","女",20},
{"20100085","寇鹏","男",21},
{"20100086","孙鑫广","男",19},
{"20100087","张志强","男",18},
{"20100088","王健","男",20},
{"20100089","孙广辉","男",21}};
main()
{
int i,j;
int Schoolboy=0;
int Schoolgril=0;
struct student temp;
//输入10个学生的学号、姓名、性别、年龄,
//for (i=0;i<10;i++)
//{
// scanf("%s%s%s%d",stu[i].stuNo,stu[i].name,stu[i].xb,&stu[i].age);
//}
//统计其中女生有多少,男生有多少,
for(i=0;i<10;i++)
{
if(strcmp(stu[i].xb,"男")==0)
Schoolboy++;
else
Schoolgril++;
}
//根据年龄从小到大对这10个学生重新排序。
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
{
if(stu[i].age>stu[j].age)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
//输出排序结果
printf("\t学号\t\t姓名\t\t性别\t\t年龄\n");
printf("---------------------------------------------------------------------------\n");
for (i=0;i<10;i++)
{
printf("\t%s\t%s\t\t%s\t\t%d\n",stu[i].stuNo,stu[i].name,stu[i].xb,stu[i].age);
}
}
//建立一个mydata.txt文本文件,向其中写入"this is a test"字符串,
//然后显示该文件的内容。
#include
展开阅读全文