2道C语言题目

2024-11-17 08:38:23
推荐回答(5个)
回答1:

/***********************************************
我的程序简单明了,有异常处理,并且可以循环输入
希望对你有帮助,并且能采纳,谢谢。
***********************************************/

//第一个程序
#include 
int main()
{
char ch;
int count = 0;
int num[3];
int myNum;
printf("请输入三个字符:0-9,A-F\n");
while( (ch = getchar()) && count <3)
{
if (ch >= '0' && ch <= '9')
{
num[count++] = ch - 48;
}
else if (ch >= 'A' && ch <= 'Z')
{
num[count++] = ch - 55;
}
else
{
fflush(stdin);
count = 0;
printf("输入不正确,请重新输入\n");
}
}
myNum = 16*16*num[0] + 16 * num[1] + num[2];
printf("%X %d %o\n", myNum, myNum, myNum);
return 0;
}



//第二个程序
#include 
int main()
{
int Num;
printf("请输入一个小于1000的正整数\n");
while(1 == scanf("%d", &Num) && (1 <= Num && 1000 > Num))
{
if (Num/100)
{
printf("%d ", Num/100);
}
if (Num%100/10)
{
printf("%d ",Num%100/10);
}
printf("%d \n",Num%10);
}
printf("输入错误,程序结束\n");
return 0;
}

回答2:

同学你这是100分的题啊,难怪没人回答。你等等吧,我有空帮你写

#include "stdio.h"
#include "stdafx.h"
#include
#include
using namespace std;
float average();
int findfail(int i);
int findgood(int i);
struct student
{
int no;
int score[5];
float vag;
};
student stu[3];//定义学生人数(本列为3人)
void main()
{
int i,j;
cout<<"请输入学生学号及其五门成绩!"< for(i=0;i<3;i++)
{
cin>>stu[i].no;
stu[i].vag=0;
for(j=0;j<5;j++)
{
cin>>stu[i].score[j];
stu[i].vag+=stu[i].score[j];
}
stu[i].vag=stu[i].vag/5;
}
cout<<"******第一门成绩的平均分******"< cout< cout<<"有2门以上(含2门)课程不及格的学生"< cout.width(5);
cout<<" 学号 "<<"********成绩列********"<<" 平均成绩"< for(i=0;i<3;i++)
if(findfail(i)!=-1)
{
cout.width(5);
cout< for(j=0;j<5;j++)
{
cout.width(5);
cout< }
cout.width(10);
cout< }
cout< cout<<"平均成绩在90分以上或全部课程成绩在85分以上的学生"< cout<<" 学号 "< for(i=0;i<3;i++)
if(findgood(i)!=-1)
{
cout.width(5);
cout< }
cout< system("pause");
}
float average()
{
int i;
float vag1=0;
for(i=0;i<3;i++)
vag1+=stu[i].score[0];
vag1=vag1/3;
return vag1;
}
int findfail(int i)
{
int j,cl=0;
for(j=0;j<5;j++)
if(stu[i].score[j]<60)
cl++;
if(cl>=2)
return i;
else
return -1;
}
int findgood(int i)
{
int j,f1=0,f2=1;

if(stu[i].vag>=90)
f1=1;
for(j=0;j<5;j++)
if(stu[i].score[j]<85)
f2=0;
if(f1||f2)
return i;
else
return -1;
}

#include "stdio.h"
#include "stdafx.h"
#include
#include
using namespace std;
void multiply();
int a[5][5],b[5][5],c[5][5],m,n;
void main()
{
int i,j;
cout<<"input m n:";
cout< cin>>m>>n;
cout<<"input A(mxn)"< for(i=0;i for(j=0;j cin>>a[i][j];
cout<<"input B(nxm)"< for(i=0;i for(j=0;j cin>>b[i][j];
multiply();
cout<<"C(mxm) is:"< for(i=0;i {
for(j=0;j cout< cout< }
system("pause");
}
void multiply()
{
int i,j,k,sum;
for(k=0;k for(i=0;i {
sum=0;
for(j=0;j sum+=a[k][j]*b[j][i];
c[k][i]=sum;
}
}
这是我写好的,不过我是用C++写的(我电脑里没有C的环境),你如果有C++的话,就可以直接运行了,如果是C的话,就把那些输入输出改一下就行了。比如C++里输入用的是"cin>>"你就把那一行改成C的scanf,C++的输出是用"cout<<",你也是把相应的行改成C的printf就行了

回答3:

#include
#include
void program1() {
char a[4]={0};
int num = 0;
int num1, num2, num3;
printf("Input 3 char, 0-9,A-F:");
scanf("%c%c%c", &a[0],&a[1], &a[2]);

if(a[0]>=0 && a[0] <='9') num1 =a[0]-'0';
else num1 =a[0]-'A' + 10;
if(a[1]>=0 && a[1] <='9') num2 =a[1]-'0';
else num2 =a[1]-'A' + 10;
if(a[2]>=0 && a[2] <='9') num3 =a[2]-'0';
else num3 =a[2]-'A' + 10;

num = num1*16*16+num2*16+num3;
printf("%X %d %o\n", num, num, num);
}

void program2() {
int num;
int a[4]={0};
int i=0;
printf("Input a number <1000:");
scanf("%d", &num);
while(num>0) {
a[i++]=num%10;
num= num/10;
if(i >= 4) break;
}
for(--i;i>0; --i) printf("%d ", a[i]);
printf("%d\n", a[0]);
}

void main()
{
program1();    
program2();
}

回答4:

/////////////////////////////////////////第一个程序,在VC++ 6.0下测试无误///////////
#include
#include
int main()
{
char a[3];
int i,result=0,x;
int temp[4];
printf("请输入3个字符。0~9或者A~F:");
for(i=0;i<3;i++)
scanf("%c",&a[i]);
for(i=0;i<3;++i)//////////检查输入是否正确
{
if((a[i]>='0'&&a[i]<='9')||(a[i]>='A'&&a[i]<='F'))
;
else
{
printf("输入有误:");
return -1;
}
}
for(i=0;i<3;++i)/////////////输出16进制
{
if(a[i]>='0'&&a[i]<='9')
printf("%d",a[i]-'0');
if(a[i]>='A'&&a[i]<='F')
printf("%c",a[i]);
}
printf(" ");
for(i=0;i<3;++i)//输出10进制结果
{
if(a[i]>='0'&&a[i]<='9')
result+=(a[i]-'0')*pow(16,2-i);
if(a[i]>='A'&&a[i]<='F')
result+=(a[i]-'A'+10)*pow(16,2-i);
}
printf("%d",result);
printf(" ");
for(i=0;result!=0;++i)//计算8进制结果
{
x=result/8;
temp[i]=result-x*8;
result=x;
}
for(i=3;temp[i]==0;--i)
;
while(i>=0)
printf("%d",temp[i--]);
return 0;
}
/////////////////////////////第二个程序///////////////////
#include
#include

int main()
{
int x,i,j,a[3];
printf("请输入一个正整数,小于1000;");
scanf("%d",&x);
if(x<0||x>1000)
{
printf("输入错误:");
return -1;
}
i=log10(x);
for(j=0;j<=i;j++)
{
a[j]=x/pow(10,i-j);
x=x-a[j]*pow(10,i-j);
printf("%d ",a[j]);
}
return 0;
}

回答5:

2.
#include
using namespace std;
int main()
{
int i,a;
cin>>a;
for(i=0;a%i!=a;i*=10)
{
if(i>1)
cout<<(a%i-a%(i/10))/10<<' ';
else
cout<}
cout<return 0;
}
第一题不会……
望采纳!