#include
#include
int main ()
{
int a[100],n,i,j,k;
printf("请输入整数个数n: ");
scanf("%d",&n);
printf("请输入%d个整数(用空格隔开): ",n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(j=0;j<n;j++)
for(k=0;k<n-1-i;k++){
if(a[k+1]<a[k]){
int temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
printf("升序排序后整数系列: ");
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
写一个函数,对任意一维数组进行降序排序
在主函数中随机生成一有n个元素的一维数组(元素的取值范围载10-90之间),调用排序函数对该数组进行排序,并输出排序结果
#include
#include
void f(int a[],int n){
for(int i=0;i<n;i++)
for(int j=0;j<n-i-1;j++)
if(a[j]<a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
int main()
{
printf("请输入产生多个随机数: ");
int a[100],num=0;
scanf("%d",&num);
printf("随机数组: ");
for(int i=0;i<num;i++){
a[i]=rand()%80+10;
printf("%d ",a[i]);
}
f(a,num);
printf("\n");
printf("降序排序后整数系列: ");
for(int j=0;j<num;j++)
printf("%d ",a[j]);
return 0;
}
#include
#include
int main()
{
char ch;
FILE *fp=fopen("D:\\test.txt","r");
if(fp==NULL){
printf("error!\n");
return 0;
}
printf("从文件中读取的内容: ");
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
return 0;
}
#include
#include
int main()
{
char ch;
FILE *fp=fopen("D:\\test.txt","w");
if(fp!=NULL)
{
printf("请输入一串字符: ");
ch=getchar();
while(ch!='#')
{
fputc(ch,fp);
ch=getchar();
}
fclose(fp);
}
else
printf("error!\n");
return 0;
}
#include
#include
struct Student{
char name[20];
int id;
int age;
};
int main()
{
struct Student stus[3]={{"zhuangsan",123,18},{"lisi",124,19},{"wangwu",125,20}};
struct Student temp[3];
int size=sizeof(struct Student);
FILE *fp=fopen("student.dat","rb+");
fopen("student.dat","wb");
if(fp!=NULL)
{
int count= fwrite(stus,size,3,fp);
if(count==3)
{
printf("数组temp中的内容为: \n");
}
}
fclose(fp);
fopen("student.dat","rb");
if(fp!=NULL)
{
int i;
for(i=0;i<3;i++)
{
int count=fread(&temp,size,1,fp);
if(count==1)
{
printf("姓名: %s\t学号: %d\t年龄: %d\n",temp->name,temp->id,temp->age);
}
}
fclose(fp);
}
return 0;
}
#include
#include
int main()
{
char arr[100];
FILE *fp=fopen("a.tex","r+");
printf("请输入一串字符给arr: ");
gets(arr);
fopen("a.tex","w");
if(fp!=NULL){
int i;
for(i=0;i<strlen(arr);i++){
fputc(arr[i],fp);
}
}
fclose(fp);
arr[0]='\0';
printf("数组arr中的内容: ");
fopen("a.tex","r");
char ch;
if(fp!=NULL)
{
ch=fgetc(fp);
while(ch!=EOF)
{
printf("%c",ch);
ch=fgetc(fp);
}
#include
#include
int main()
{
char arr[80];
char ch,*p;
printf("请输入一串字符给arr: ");
gets(arr);
printf("请输入要查找的字符: ");
scanf("%c",&ch);
p=strchr(arr,ch);
if(p!=NULL){
printf("%c在字符串%s中的索引位置为: %d\n",ch,arr,p-arr);
return 0;
}
printf("%s中没有字符%c",arr,ch);
return 0;
}
#include
#include
void myStrCat(char *dest,char *src)
{
char *trm;
int i,j;
for(i=0;dest[i]!='\0';i++)
{
trm[i]=dest[i];
}
for(j=0;src[j]!='\0';j++)
{
trm[i+j]=src[j];
}
puts(trm);
}
int main()
{
char src[80];
char dest[80];
void myStrCat(char *dest,char *src);
printf("请输入一串字符给stc: ");
gets(src);
printf("请输入一串字符给dest: ");
gets(dest);
printf("执行mysterCat前dest的内容: %s\n",dest);
printf("执行mysterCat后dest的内容 :");
myStrCat(dest,src);
return 0;
}
#include
#include
int main()
{
char stc [80]={'\0'};
char dest[80]={'\0'};
printf("请输入一串字符: ");
gets(stc);
printf("执行strcpy前dest的内容:%s\n",dest);
strcpy(dest,stc);
printf("执行stecpy后dest的内容:%s\n",dest);
return 0;
}
目标值与数组所有元素去比对,找出最接近的元素,输出下标
举例如下:一个数组[915,941,960,976,992,1015,1034,1050,1073,1089,1115,1131,1150,1166,1182,1208,1227]
目标值假设是1000,最接近元素为992,下标为4
#include
int main()
{
int min=(1<<31)-1;
int idx=0;
int arr[]={915,941,960,976,992,1015,1034,1050,1073,1089,1115,1131,1150,1166,1182,1208,1227};
int n=1000;
for(int i=0;i<sizeof(arr)/sizeof(int);i++)
{
int diff=arr[i]-n;
if(diff<0)
diff=-diff;
if(diff<min)
{
min=diff;
idx=i;
}
}
printf("最接近的是%d,下标是%d",arr[idx],idx);
return 0;
输入任意个数数组,查找出与目标值最接近的元素,并输出其下标
#include
int main()
{
int min=(1<<31)-1;
int idx=0,arr[100],m,n;
printf("请输入数组元素个数: ");
scanf("%d",&m);
printf("请输入数组元素: ");
for(int j=0;j<m;j++)
{
scanf("%d",&arr[j]);
}
printf("请输入目标值: ");
scanf("%d",&n);
for(int i=0;i<m;i++)
{
int diff=arr[i]-n;
if(diff<0)
diff=-diff;
if(diff<min)
{
min=diff;
idx=i;
}
}
printf("最接近的是%d,下标是%d",arr[idx],idx);
return 0;
}
#include
#include
int main()
{ int i, sum=0;
int num = 0;
printf("1~100之间不能被3整除但能被5整除的整数分别为:\n");
for(i=1;i<= 100;i++)
{
if(i%3!= 0 && i%5 == 0)
{
printf("%d\t",i);
num++;
if(num%5 ==0)
printf("\n");
sum=sum+i;
}
}
printf("\n");
printf("不能被3整除但能被5整除的整数之和为:%d\n", sum);
return 0;
}
#include
#include
int main(){
int stuNum=0;
int remainder=-1;
int weekNum=0;
printf("请输入学号(1420110001,142015000):\n");
scanf("%d",&stuNum);
if((stuNum>=142011001)&&(stuNum<=142015000)){
printf("请输入周数:\n");
scanf ("%d",&weekNum);
if((weekNum>=1)&&(weekNum<=20))
remainder=stuNum %10;
if(remainder%3==weekNum%3)
printf("学生%d在第%d周应该交作业吗?是\n");
}
else
printf("学生%d在第%d周应该交作业吗?否\n");
return 0;
}
#include
#include
int main()
{
char a[20]={'H','e','l','l','o',' ','W','o','r','l','d'};
int i;
printf("加密前:\n");
for(i=0;i<20;i++){
printf("%c",a[i]);
}
printf("\n");
for(i=0;i<20;i++){
if(a[i]>='a'&&a[i]<='z'){
if(a[i]<'v'){
a[i]+=5;
}
else
a[i]-=21;
}
if(a[i]>='A'&&a[i]<='Z'){
if(a[i]<'V'){
a[i]+=5;
}
else
a[i]-=21;
}
}
printf("加密后:\n");
for(i=0;i<20;i++){
printf("%c",a[i]);
}
return 0;
}
#include
#include
char f(int n);
int main()
{
char grade_level;
int grade;
printf("请输入学生的成绩:");
scanf("%d",&grade);
grade_level=f(grade);
printf("该学生的成绩等级为:%c",grade_level);
return 0;
}
char f(int n)
{
char level;
switch(n/10)
{
case 10:
case 9:
level='A';
break;
case 8:
level='B';
break;
case 7:
level='C';
break;
case 6:
level='D';
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
level='E';
break;
}
return level;
}
#include
#include
int main()
{
char ch=0;
int upperNum=0;
int lowerNum=0;
int digitNum=0;
printf("请输入一串字符,按回车结束:");
while((ch=getchar())!='\n')
{
if(ch>='A'&&ch<='Z'){
upperNum++;
}
else if(ch>='a'&&ch<='z'){
lowerNum++;
}
else if(ch>='0'&&ch<='9'){
digitNum++;
}
}
printf("大写字母个数:%d,\n",upperNum);
printf("小写字母个数: %d\n",lowerNum);
printf("数字字符个数: %d\n",digitNum);
printf("So Easy!!!\n");
return 0;
}
#include
#include
int main()
{
double results[10];
int i=0;
double max=0,min=100,sum=0,average;
printf("成绩登记:\n");
for(i=0;i<10;i++){
printf("请输入第%d个学生的成绩: ",i+1);
scanf("%lf",&results[i]);
if(max<results[i]){
max=results[i];
}
if(min>results[i]){
min=results[i];
}
sum+=results[i];
}
average=sum/10;
printf("统计如下: \n");
printf("所以学生中最高分为:%f \n",max);
printf("所以学生中最低分为:%f \n",min);
printf("所以学生中平均分为:%f \n",average);
return 0;
}
#include
#include
int main()
{
char str[3][80];
char temp[80];
int i,j,k;
printf("请输入三行文本(每行小于80个字符):\n");
for(i=0;i<3;i++){
gets(str[i]);
}
for(i=0;i<3;i++){
k=i;
for(j=k+1;j<3;j++){
if(strcmp(str[k],str[j])>0){
k=j;
}
}
if(k!=i){
strcpy(temp,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],temp);
}
}
printf("按字典排序后的结果: \n");
for(i=0;i<3;i++){
puts(str[i]);
}
return 0;
}
一只青蛙一次可以跳上1级台阶,也可以跳上2级。
求该青蛙跳上一个n级的台阶总共有多少种跳法。
解法一:递归法
#include
#include
int f(int n){
int tem;
if(n<=2)
tem=n;
else
tem=f(n-1)+f(n-2);
return tem;
}
int main()
{
int n,tem;
int f(int n);
printf("请输入台阶数n: ");
scanf("%d",&n);
if(n>=0){
tem=f(n);
printf("该青蛙跳上一个%d级的台阶总共有%d种跳法。",n,tem);
}
else
printf("输入错误!");
return 0;
}
#include
#include
int main()
{
char str[20];
int i;
int len;
printf("请输入小于20个字符:");
gets(str);
len=strlen(str);
for(i=0;i<len/2;i++){
if(str[i]!=str[len-i-1]){
printf("%s不是对称的\n",str);
return 0;
}
}
printf("%s是对称的\n",str);
return 0;
}
一只刚出生的奶牛,4年生1只奶牛,以后每一年生1只。现在给你一只刚出生的奶牛,求20年后有多少奶牛?
#include
#include
int icows (int year){
int i,cows=1;
for(i=0;i<=year;++i){
if(i>3){
if((year-i)>3)
cows+=icows(year-i);
else
cows++;
}
}
return cows;
}
int main()
{
int year;
int cows;
int icows (int year);
printf("请输入年数: ");
scanf("%d",&year);
cows=icows(year);
printf("%d年后奶牛总数为%d",year,cows);
return 0;
}
#include
#include
int main()
{
int i,j,k;
char space=' ';
char a[5]={'*','*','*','*','*'};
for(i=0;i<5;i++){
for(j=0;j<i+2;j++){
printf("%c",space);
}
for(k=0;k<5;k++){
printf("%c",a[k]);
}
printf("\n");
}
return 0;
}
#include
#include
int findElement(int *ptr,int arrLen,int n){
int i;
for(i=0;i<arrLen;i++){
if(ptr[i]==n){
return i;
}}
return -1;
}
int main()
{
int arr[10];
int n,i;
int findElement(int *ptr,int arrLen,int n);
for(i=0;i<10;i++){
printf("请输入第%d个元素: ",i+1);
scanf("%d",&arr[i]);
}
printf("请输入要查找的n的值:");
scanf("%d",&n);
i=findElement(arr,10,n);
printf("数组中存在与待查找的n(%d)相等的数组元素,其下标为:%d\n",n,i);
return 0;
}
#include
#include
void swap(int *a,int *b){
int p;
p=*a;
*a=*b;
*b=p;
}
int main()
{
void swap(int *a,int *b);
int x,y;
printf("请输入两个整数,如12,34:");
scanf("%d,%d",&x,&y);
printf("交换前: x和y的值分别为:%d,%d\n",x,y);
swap(&x,&y);
printf("交换后: x和y的值分别为:%d,%d\n",x,y);
printf("So Easy!");
return 0;
}
#include
#include
float getRectArea(float length,float width){
float area=0;
area=length*width;
return area;
}
float getCuboidVolume(float length,float width,float height){
float volume=0;
volume=length*width*height;
return volume;
}
int main()
{
float length=0,width=0,height=0,area=0,volume=0;
float getRectArea(float length,float width);
float getCuboidVolune(float length,float width,float height);
while(1){
printf("请依次输入长度、宽度和高度(如1.0,2.0,3.0):");
scanf("%f,%f,%f",&length,&width,&height);
area=getRectArea(length,width);
printf("矩形(长:%f,宽:%f)的面积为:%f\n",length,width,area);
volume=getCuboidVolume( length,width,height);
printf("矩形(长:%f,宽:%f,高:%f)的体积为:%f\n",length,width,height,volume);
if(area<0){
break;
}
else{
continue;
}
}
}
#include
#include
int main()
{
unsigned int number;
int result;
printf("请输入一个无符号整数: \n");
scanf("%d",&number);
result=number%2;
if(result==0)
printf("整数%d是偶数!\n",number);
else
printf("整数%d是奇数!\n",number);
return 0;
}
#include
#include
struct Student{
char name[20];
int math;
};
int main()
{
struct Student arr[5];
int index=0,i,j;
for(i=0;i<5;i++)
{
printf("请输入第%d个学生的姓名和数学成绩(用空格分开): ",i+1);
scanf("%s %d",&arr[i].name,&arr[i].math);
getchar();
}
for(j=0;j<5;j++)
{
if(arr[j].math>arr[index].math)
index=j;
}
printf("数学成绩最高的学生姓名是: %s ,其数学成绩为: %d\n",
arr[index].name,arr[index].math);
return 0;
}
#include
#include
char getGradeLevel(int grade){
if(grade>=0&&grade<=100){
char gradeLevel;
int grade_d10=-1;
grade_d10=grade/10;
switch(grade_d10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
return'E';
case 6:
return'D';
case 7:
return 'C';
case 8:
return 'B';
case 9:
case 10:
return 'A';
}
}
else
return '0';
}
int main()
{
int grade=-1;
char gradeLevel='A';
char getGradeLevel(int grade);
while(1){
printf("请输入成绩(0~100):\n");
scanf("%d",&grade);
gradeLevel= getGradeLevel(grade);
printf("成绩%d的等级是%c: \n",grade,gradeLevel);
if(gradeLevel='0'){
break;
}
else
continue;
}
printf("So Easy!!!!!\n");
return 0;
}
#include
#include
struct Person{
char arr[20];
char ch;
unsigned int age;
};
int main()
{
struct Person per1={"Person 1",'F',30};
struct Person per2={"Person 2",'M',20};
if(per1.age>per2.age)
printf("Person 1比Person 2年龄大\n");
else
printf("Person 2比Person 1年龄大\n");
printf("Person: Person 1的个人信息为:\n");
printf("\tName: %s\n",per1.arr);
printf("\tSex : %c\n",per1.ch);
printf("\tAge : %d\n",per1.age);
printf("Person: Person 2的个人信息为:\n");
printf("\tName: %s\n",per2.arr);
printf("\tSex : %c\n",per2.ch);
printf("\tAge : %d\n",per2.age);
printf("So Easy!");
return 0;
}
#include
#include
enum weekday
{
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday,
};
int main()
{
int i;
while(1){
printf("请输入当前工作日(1~7):");
scanf("%d",&i);
if(i<=7&&i>=1){
switch(i)
{
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
}
}
else{
printf("输入的工作日%d不在正确范围内(1~7)\n",i);
return 0;
}
}
}
#include
#include
int main()
{
int n,x,y,z,i,min=10000,n1,n2,n3,temp=0,t=0;
//n为咨询的商家数,xyz分别为要购买商品一、商品二、商品三的数量
//n1、n2、n3分别为商品一、二、三的价格
printf("咨询的商家数为: ");
scanf("%d",&n);
printf("需购买商品一、二、三的数量为: ");
//输入数据用空格分隔,以下皆是
scanf("%d %d %d",&x,&y,&z);
for(i=0;i<n;i++){
printf("编号为%d的商家商品一、二、三的报价: \n",i+1);
scanf("%d %d %d",&n1,&n2,&n3);
temp=n1*x+n2*y+n3*z;
if(temp<min){
min=temp;
t=i+1;
}
}
printf("在编号为%d的商家购买总费用最低,为 %d元!!!",t,min);
return 0;
}
问题:
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
#include
#include
//定义一个求组合的函数!
int combination(int m, int n) {
if(m > n)
return combination(n, m);
int i,j;
long long result = 1;
for (i = n,j = 1; j <= m - 1; i++, j++) {
result=result*i/j;
}
return result;
}
int main()
{
int n,m;
long long sum;
printf("请输入网格规格m X n: ");
//m n 输入用空格隔开!
scanf("%d %d",&m, &n);
sum=combination(m,n) ;
printf("总共有%lld条路径!",sum);
return 0;
}
在金融中,我们有时会用内部收益率IRR来评价项目的投资财务效益,它等于使得投资净现值NPV等于0的贴现率。换句话说,给定项目的期数T、初始现金流CF0和项目各期的现金流CF1, CF2, …,CFT,IRR是下面方程的解:
为了简单起见,本题假定:除了项目启动时有一笔投入(即初始现金流CF0 < 0)之外,其余各期均能赚钱(即对于所有i=1,2,…,T,CFi > 0)。根据定义,IRR可以是负数,但不能小于-1。
输入文件最多包含25组测试数据,每个数据占两行,第一行包含一个正整数T(1<=T<=10),表示项目的期数。第二行包含T+1个整数:CF0, CF1, CF2, …, CFT,其中CF0 < 0, 0 < CFi < 10000 (i=1,2,…,T)。T=0表示输入结束.
#include
#include
double f(double IRR,int CF[],int T ){
double NPV=0;
for(int i=0;i<=T;i++){
NPV+=CF[i]/pow((1+IRR),i);
}
return NPV;
}
int main()
{
int CF[25],T;
double IRR;
while(scanf("%d",&T)&&T){
double x=-1,y=1e8;
printf("项目周期T为: %d\n",T);
printf("请输入%d个整数CF(用空格空开): \n",T+1);
for(int i=0;i<=T;i++){
scanf("%d",&CF[i]);
printf("输入的CF[%d]为: %d\n",i,CF[i]);
}
while(fabs(f(x,CF,T)-f(y,CF,T))>1e-6){
IRR=(x+y)/2;
if(f(x,CF,T)*f(IRR,CF,T)<0)
y=IRR;
if(f(IRR,CF,T)*f(y,CF,T)<0)
x=IRR;
if(f(IRR,CF,T)==0)
break;
}
printf("IRR为:%.2f\n",IRR);
printf("\n");
}
return 0;
}