c语言基础编程100道,计算机编程C语言的基础题

1,计算机编程C语言的基础题1,源程序如下:#include <stdio.h>int main() float a=0.0,b=0.0,h=0.0;//初始化为0,值可以自己赋printf("请输入上底,下底边长和高:\n");scanf("%f%f%f",&a,&b,&h);printf("梯形面积=(%.2f+%.2f)*%.2f/2.0=%.3f\n",a,b,h,(a+b)*h/2.0);return 0;}2,源程序如下:#include <stdio.h>int main() float x=0.00,y=0.00;//初始化为0,值可以自己赋printf("请输入x,y:\n");scanf("%f%f",&x,&y);printf("(x-y)/(x+y)=%.2f\n",(x-y)/(x+y));return 0;}3 , 不知道题目是什么意思什么叫标注的c格式
2 , C语言编程题#include <stdio.h>int main()int a[100],i,j,temp,s=0;for(i=0;i<15;i++)printf("输入的第%d个整数为:\t",i+1); scanf("%d",&a[i]);s+=a[i];}for(i=0;i<15;i++)for(j=i+1;j<15;j++)if(a[i]>a[j]) temp=a[i];a[i]=a[j];a[j]=temp; }}printf("这%d个整数从小到大排列为:\n",15);for(i=0;i<15;i++)printf("%d\t",a[i]);printf("\n向数组中插入一个整数:");scanf("%d",&a[15]);for(i=0;i<16;i++)for(j=i+1;j<16;j++)if(a[i]>a[j]) temp=a[i];a[i]=a[j];a[j]=temp; }}printf("这%d个整数从小到大排列为:\n",16);for(i=0;i<16;i++)printf("%d\t",a[i]);printf("\n");return 0;}
3,C 语言编程题char *substr(char s[],int m,int n) static char pstr[100]; for(;m<=n;++m) pstr[m-1]=s[m-1]; return pstr;}int main() char str[]="informationtechnology"; char *p; p=substr(str,1,4); printf("%s\n",p); return 0;}#include<stdio.h>#include<math.h>int main()return 0;}第一图:考点:自键运算;运行结果:y=9y=8...y=0共10个要点:注意y--与--y的区别,如果题中将y--改为--y,则输出9个结果,没有y=0;;举一个简单的例子 , 下列语句:i=1,j=1;a=--i;b=j--;那么a,b,i,j的值是多少呢? a=0,i=0,b=1,j=0;前自增(减)表达式的值与变量原值相等,后自增(减)表达式的值与变量后值相等第二图:程序功能很简单,循环执行6侧 , 每一次给C一个值,并将其输出考点:getchar()对回车符的处理;举例子:假设<CR>为回车符输入:abcdef<CR> 和 abc<CR>def<CR>是否一样呢?答案是不一样 。<CR>也作为一个字符被接受并输出,所以你会发现第二次的输出少了一个f,而且有换行我看不清图上后三行写的什么,我大约说一下吧假设是这样的:u<CR>w<CR>xma<CR>输出为:uwxm共四个字母两个换行,明白了吧?多做几组测试你就会清楚了这是要考数组操作呀【c语言基础编程100道,计算机编程C语言的基础题】
4,C语言编程题#include<stdio.h>#include<stdlib.h>void Itob(int n,char s[],int b);int main()int n,s[100],b;scanf("%d %d",&n,&b);//n是要转换的数,b是进制Itob(n,s,b);printf("\n");return 0;}void Itob(int n,char s[100],int b)int i=0,j;while(n!=0)j=i; s[i++]=n%b;//取余数 n/=b;}for(i=j; i>=0; i--)if(s[i]<10) printf("%d",s[i]);//小于10的时候直接输出 } else printf("%c",s[i]+55);//大于等于10时用大写英文字母代替 }}}给你一个思路,把十进制转换为X进制:用stack思想,用这个十进制数对X进制取模如:对11去二进制11/2=5...1 5/2=2...12/2=1...01/2=0...1所以此数转换成二进制为1011去下载一个转换器 。#include <studio.h>void main() int num; int a[20],i=0; printf("请输入一个十进制数字:\n"); scanf("%d",&num); for(;num;)a[i]=num%b;// b要换成的几进制num=num/b;i++;}int k=i-1; for(;k>=0;k--)printf("%d",a[k]); }}5,C语言程序编程题这个数是21.21+100=11^2,21+100+168=17^2.很简单:168=6*28,x+y=28,x-y=6;x=17,y=11;11^2-100=21.C语言的开方是浮点运算,你的算法不靠谱 。所以你还是要按照常规的方法 。用代数来描述这个问题就是:x + 100 = y*yx + 168 = z*z两式相减,得到z*z - y*y = 68,即(z - y)(z + y) = 68 = m * n,下面就是把68分解成两个数,for(int i = 2; i < 68/2 ; i ++)if(68 % i == 0)m = i;n = 68/i;//算出y和zif(m + n % 2 == 0)z = (m + n) / 2;break;}}continue;} x = z * z - 168;#include "math.h"#include "stdio.h"for(int i=1;i<100000;i++)if(((x+100)==sqrt(x+100)*sqrt(x+100))&&((x+100+168)==sqrt(x+100+168)*sqrt(x+100+168)))printf("%4d,",x);}希望对你有所帮助解题思路:设该数为x,它加100后是A,再加168为B 。则因为A是完全平方数 , 所以A为正数,且A=y*y,y为正整数或0 。同理,B为正数 , B=z*z,z为正整数 。因为B=A+168>A,所以 , 我们可设z=y+n,n为正整数,n>0 。由B=A+168,有:(y+n)(y+n)=y*y+168,即:y=84/n-n/2 。又y为正整数,所以84/n-n/2≥0,则得出n≤13所以 , 编程时可用的条件有:0<n≤13y=84/n-n/2x=y*y-100,当y为整数时 , 就是符合题目的y 。*/#include <stdio.h>int main()int n,x;float y;for(n=1;n<=13;n++)y=84.0/n-n/2.0;//这里用84.0和2.0,是因为整数用“/”时,结果会取整,用这种浮点型数才不会直接取整数 。if(int(y) == y)//当y是一个整数时,求出对应x,并输出 。x=int(y*y-100);printf("%d\n",x);}}return 0;} #include <iostream>#include <cmath>using namespace std;int main() for(int i=1;i<=10000;i++)double t=sqrt( double(i+100) );double s=sqrt( double(i+168) );if(t==int(t) && s==int(s))cout<<i<<endl; } return 0;}#include<stdio.h>#include<math.h>void main()int i,shu1,shu2,ping1,ping2;for(i=1;i<100000;i++)shu1=i+100;shu2=i+168;ping1=sqrt(shu1);ping2=sqrt(shu2);if(ping1*ping1==shu1&&ping2*ping2==shu2)printf("%d\n",i);}}应该是156我的思路是既然加后是平方数,那么你就先把这几个平方数求出来,也不多 , 然后用它们来求就行!因为加上的是100,所以每个平方数应该大于100的哦(懂吧?),而当数是40时,平方是1600,而41则是1681了,两个值的差是81了 , 大于168-100=68了,而接下去的相临平的差将更大!也就是说不可能再有这样的两个平方数的差是68,也就不符合你的要求了!因此 , 最大的平方的数设为40的平方就可以,不用到100的平方10000哦,快了很多!#include <stdio.h>voidmain(void)int i, j, num[40];/* 定义一个大小40的数组 */for (i=10; i<40; i++)/* 求出10~40这间的所有平方数*/num[i-10] = i*i;}for (i=0; i<38; i++)/* 因为num[39]就是最后一个数,而下面num[j]表示在i的下一个数,所以这里<38*/for (j=i+1; num[j]-num[i]<68; j++)/*因为刚开始的数比较小 , 所以不止是相临才有可能符合条件哦,即相隔的几个平方的差也可能是68*/;/*一个空语句,即什么也不做*/ }if (num[j]-num[i] == 68)/* 判断要的目的是不是成立了*/break;/*成立表示找到了,可退出哦*/}}if (i == 38)/*要再一次判断是全部循环完退出还是条件成立的退出*/printf("No found!");}elseprintf("The number is %d", num[i]-100);}}答案是:156

    推荐阅读