本文目录一览:
- 1、求解一道C语言基础编程题。
- 2、C语言编程题,考试急用,请高手帮忙啊!!!!
- 3、简单C语言编程
- 4、求C语言编程实例100行以上,要有文字大概解释一下
- 5、求解几道基础C语言题
- 6、急求 几道C语言基础编程大题 求详细过程
求解一道C语言基础编程题。
首先看一下程序的逻辑(虽然貌似题主应该不是在这一块有问题:
关于ascii码的解释:
首先得知道每个字符和数值的对应关系(图不清晰可看戳这里:ascii编码对应表
好了,现在看程序中的第一个if语句,在用大于、小于这些运算比较符比较char的时候,会自动转换为整数比较,也就是说‘0’会转换成48,‘1’转换成49……以此类推,最后是‘9’转换成57,你会发现把这些char减去48就会得到它们各自相对应的整数数值,这就是第一个if里面减去48的目的。同理,接下来的else-if语句,‘A’到‘F’也会转换成整数数值,具体对应的数值可以参看ascii表,一样的道理减去‘A’然后加10的目的也是转换成数值,因为在大于10的进制下,A代表10,B代表11……以此类推,因为这个程序最高就16进制了,所以判断到F就可以了。
然后我们来看进制的解释:
所谓进制,其实就是组合数字的方式,理解了这一点就很好说了。比如说10进制,为什么198等于198(好像很傻一问题)?其实是因为在十进制下,198 (10) = 1 * 10^2 + 9 * 10^1 + 8 * 10^0 = 198(好像是这么回事,(。ì _ í。)),同一个数字,放在不同的位置,它所代表的分量也不一样,即组合数字的方式会影响数字的值,1后面还有2个数字,所以这个1实际上是1 * 10^2 = 100,而不是1,其它位置的数字同理,然后把这些值加起来,就得到了整个数字所代表的最终的值,因此我们才有了 198 = 198(好像很有道理)。
但是,198也可能不等于198,什么时候不等于呢?在不同的进制下。比如说假如我们的这个198是在16进制下的198,那么 198 (16) = 1 * 16^2 + 9 * 16^1 + 8 * 16^0 = 408 (10) = 408。
为什么会产生这种差别呢?因为16进制下的那个1代表的分量是1 * 16^2了,而不是1 * 10^2了,同理,在其它进制下只需要把乘的数字换成对应的进制的数就好了,比如在9进制下那个1就是1 * 9^2等等。
这样一来上面程序里面的for语句就好理解了,之所以用for是因为要算出次方(这个应该不用解释),一个数要乘的次方是它后面跟着的数字的个数,所以是“j = 0; j len - 1”。
然后把这些值加起来,就得到这个数字对应的十进制下的数值,也就完成了最终的转换。
题主可以随便写些不同进制下的数字,然后自己算出十进制下对应的数值,和网站上得出的结果比较比较,这样也可以加深对进制的理解,同时提高计算能力。
戳这里:在线进制转换
这里给出了一个链接,这种网页到处都是,随便搜一下就可以找到。
C语言编程题,考试急用,请高手帮忙啊!!!!
1.
#includestdio.h
long fun(long int x)
{
long ret=0;
while(x){
if(x%10%2){
ret= ret*10+ x%10;
}
x=x/10;
}
return ret;
}
void main()
{
long a,b;
printf("Please input a long int num:");
scanf("%ld",a);
b=fun(a);
printf("b=%ld\n",b);
}
2.
#includemath.h
void fun(char *s,char *t,char *p)
{
int i=0,j=0,k=0;
for(i=0;i50;i++){
p[i]=0;
}
i=0;
while(t[i]){
j=0;
while(s[j]){
if(t[i]!=s[j]){
j++;
}else break;
}
k=0;
while(p[k]){
if(t[i]!=p[k]){
k++;
}else break;
}
if(s[j]==0 p[k]==0){
p[k]=t[i];
}
i++;
}
}
void main()
{
char s1[50],s2[50],s3[50];
gets(s1);gets(s2);
fun(s1,s2,s3);
puts(s3);
}
3.
int fun(int m)
{
int sum=0,a=0,i;
if(m==1) return 1;
for(i=1;;i++){
a=a+i;
sum =sum+a;
if(summ)
return i-1;
}
}
void main()
{int x;
scanf("%d",x);
printf("n=%d\n",fun(x));
}
4.
#define N 10
void fun(int *x,int n)
{
int i,min_n,min;
min=x[0];
min_n=0;
for(i=1;in;i++){
if(x[i]min){
min=x[i];
min_n=i;
}
}
i=x[0];
x[0]=x[min_n];
x[min_n]=i;
min=x[1];
min_n=1;
for(i=2;in;i++){
if(x[i]min){
min=x[i];
min_n=i;
}
}
i=x[1];
x[1]=x[min_n];
x[min_n]=i;
}
main()
{int a[N],i;
for(i=0;iN;i++)
scanf("%d",a+i);
fun(a,N);
for(i=0;iN;i++)
printf("%d ",a[i]);
printf("\n");
}
5.
#include math.h
long fun(int high,int n)
{
int sum=0,count=0,k,i;
for(high--;high=2;high--){
k=0;
for(i=2;i=sqrt(high+1);i++){
if(high%i==0){
k=1;
break;
}
}
if(k==0){
count++;
sum += high;
}
if(count==n) break;
}
return sum;
}
void main()
{int k,n;
scanf("%d%d",k,n);
printf("sum=%ld\n",fun(k,n));
}
6.
int fun(int *a,int n)
{
int i,j;
for(i=j=0,j;in;i++){
if(!(a[i]%2)){
a[j]=a[i];
j++;
}
}
a[j]=-1;
return j;
}
void main()
{int x[15],i,n;
for(i=0;i15;i++)
scanf("%d",x+i);
n=fun(x,15);
for(i=0;x[i]!=-1;i++)
printf("%d ",x[i]);
printf("n=%d\n",n);
}
简单C语言编程
1。#include iostream
using namespace std;
int main()
{
int i;
for(i=0;i=100;i++)
{
if(i%4==0i%9==0)
coutiendl;
}
return 0;
}
2。
#include iostream
using namespace std;
int main()
{int a,b,c,d;
cinabc;
d=c;
c=b;
b=a;
a=d;
coutaendlbendlcendl;
return 0;
}
3。#include fstream
#include iostream
using namespace std;
int main()
{
char a[90];
ofstream outfile("your_file.txt",ios::out);
cin.getline(a,90);
outfilea;
return 0;
}
4。
#include iostream
using namespace std;
int main()
{
char c[80];
cin.getline(c,80);
int i=0,j=0;
while(c[i]!='\0')
{
if(c[i]=65c[i]=90)
i++;
j++;
}
coutjendl;
return 0;
}
5。
#include iostream
using namespace std;
struct student
{
char name[50];
int score;
};
int main()
{
student a[5];
int i;
for(i=0;i=4;i++)
{
cina[i].namea[i].score;
}
FILE *fp;
fp=fopen("data1.txt","w");
for(i=0;i=4;i++)
{
fprintf(fp,"%s\n",a[i].name);
fprintf(fp,"%d\n",a[i].score);
}
fclose(fp);
return 0;
}
求C语言编程实例100行以上,要有文字大概解释一下
#include stdio.h
main(int a,char **date)
{
int year=0,month=0,day=0,week;
int d,i,dm,dy,m2;
char WEEK[9];
if (a==1)
{
printf ("\n ERROR! you forgot to enter the date you want to view\n");
exit (0);
}
i=0; d=-1;
while (date[1][i])/*遍历传入的参数日期,计算出year,month,day*/
{
if ((date[1][i]=='/'||date[1][i]=='.')d==-1) { d=0; i++; continue; }
if ((date[1][i]=='/'||date[1][i]=='.')d==0) { d=1; i++; continue; }
if (d==-1) year=year*10+(date[1][i]-'0');
if (d==0) month=month*10+(date[1][i]-'0');
if (d==1) day=day*10+(date[1][i]-'0');
i++;
}
if (month1||month12)/*若月份传入错误数字*/
{
printf ("\n ERROR! the entered MONTH is invalid\n");
exit (0);
}
if (year==2000)
{
dy=0; /*年引起的星期差为0个*/
m2=1; /*2月引起的星期差为1个*/
goto la_100;
}
if (year2000)
d=(year-1-2000)/4-(year-1-2000)/100+(year-1-2000)/400+1;
else
d=(year-2000)/4-(year-2000)/100+(year-2000)/400;
dy=(year-2000)+d; /*** 该年 1月1号 到2000年1月1号的 " 星期差 " ***/
if((year%4==0year%100!=0)||(year%100==0year%400==0))
m2=1;
else
m2=0; /*** 该年是否润 ***/
la_100: /**** la_100 ****/
/*** 该月以前的月所引起的 " 星期差 " ***/
switch (month)
{
case 1: dm=0; month=31; break; /*** month 在此存放该月天数 ***/
case 2: dm=3; month=d==1? 29:28; break;
case 3: dm=3+m2; month=31; break;
case 4: dm=6+m2; month=30; break;
case 5: dm=1+m2; month=31; break;
case 6: dm=4+m2; month=30; break;
case 7: dm=6+m2; month=31; break;
case 8: dm=2+m2; month=31; break;
case 9: dm=5+m2; month=30; break;
case 10: dm=m2; month=31; break;
case 11: dm=3+m2; month=30; break;
case 12: dm=5+m2; month=31; break;
}
if (day0||daymonth)
{
printf ("\n ERROR! the entered DAY is invalid\n");
exit (0);
}
week=(dy+dm+day-1+6)%7;
if(week0)
week+=7;
if (day0) /*** 判定查看类型 ***/
{
switch (week)
{
case 0: strcpy (WEEK,"SUNDAY"); break;
case 1: strcpy (WEEK,"MONDAY"); break;
case 2: strcpy (WEEK,"TUESDAY"); break;
case 3: strcpy (WEEK,"WEDNESDAY"); break;
case 4: strcpy (WEEK,"THURSDAY"); break;
case 5: strcpy (WEEK,"FRIDAY"); break;
case 6: strcpy (WEEK,"SATURDAY"); break;
}
printf ("\n this day is %s \( %d \)\n\n OK!\n",WEEK,week);
}
else
{
week=++week%7;
printf ("\n the calender of this month as following\n");
printf ("\n *********************************\n");
printf (" SUN MON TUE WEN THU FRI STA\n");
for (i=0;iweek;i++)
printf (" ");
for (i=1;i=month;i++)
{
printf (" %2d ",i);
week++;
if (week%7==0i!=month)
printf ("\n");
}
printf ("\n *********************************\n");
printf ("\n OK!\n");
}
}
这是一个万年历的小程序,效率不怎么高,不过涉及到很多基础知识,可以读读
求解几道基础C语言题
int mi(double x,int y){
if(y0) return pow(1/x,y);
else return pow(x,y);
}
int f(int x){
int sum=0;
while(x0) {sum+=x%10;x/=10;}
return sum;
}
2次
1次
int chu(int m,int n){
int i;
for(i=m;i=n;i++){
if(i%3==0||i%7==0) continue;
printf("%d\n",i);
}
}
void prime(){
int i;
for(i=2;i=100;i++){
int j;
int flag = 1;
for(j=2;j*j=i;j++) if(i%j==0) {flag = 0;break;}
if(flag) printf("%d\n",i);
}
}
急求 几道C语言基础编程大题 求详细过程
/*九九乘法表*/
#include stdio.h
int main()
{
int i,j;
for(i=1;i10;i++)
{
for(j=1;j10;j++)
{
printf("%dX%d=%d\t",i,j,j*i);
if(i==j)
break;
}
printf("\n");
}
return 0;
}