2道C语言题目

1.问题描述程序提示用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出。输入格式:输... 1.问题描述
程序提示用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出。
输入格式:输入只有一行,即三个字符。
输出格式:输出只有一行,包括三个整数,中间用空格隔开。
输入输出样例
输入样例:
FFF
输出样例:
FFF 4095 7777
2.
问题描述
  编写一个程序,输入一个1000 以内的正整数,然后把这个整数的每一位数字都分离出来,并逐一地显示。
  输入格式:输入只有一行,即一个1000以内的正整数。
  输出格式:输出只有一行,即该整数的每一位数字,之间用空格隔开。
  输入输出样例
样例输入
769
样例输出
7 6 9
1题输入三个字符,非一个16进制数。题目要求如此表达
展开
 我来答
hubing_hust
2013-10-10 · TA获得超过379个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:133万
展开全部
/***********************************************
我的程序简单明了,有异常处理,并且可以循环输入
希望对你有帮助,并且能采纳,谢谢。
***********************************************/

//第一个程序
#include <stdio.h>
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 <stdio.h>
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;
}
lexin_lyl
2013-10-11 · TA获得超过714个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:470万
展开全部
同学你这是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<<"请输入学生学号及其五门成绩!"<<endl;
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<<"******第一门成绩的平均分******"<<endl;
cout<<setprecision(3)<<average()<<endl<<endl<<endl;
cout<<"有2门以上(含2门)课程不及格的学生"<<endl;
cout.width(5);
cout<<" 学号 "<<"********成绩列********"<<" 平均成绩"<<endl;
for(i=0;i<3;i++)
if(findfail(i)!=-1)
{
cout.width(5);
cout<<stu[i].no;
for(j=0;j<5;j++)
{
cout.width(5);
cout<<stu[i].score[j];
}
cout.width(10);
cout<<stu[i].vag<<endl;
}
cout<<endl<<endl;
cout<<"平均成绩在90分以上或全部课程成绩在85分以上的学生"<<endl;
cout<<" 学号 "<<endl;
for(i=0;i<3;i++)
if(findgood(i)!=-1)
{
cout.width(5);
cout<<stu[i].no<<endl;
}
cout<<endl;
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<<endl;
cin>>m>>n;
cout<<"input A(mxn)"<<endl;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
cout<<"input B(nxm)"<<endl;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>b[i][j];
multiply();
cout<<"C(mxm) is:"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
cout<<setw(5)<<c[i][j];
cout<<endl;
}
system("pause");
}
void multiply()
{
int i,j,k,sum;
for(k=0;k<m;k++)
for(i=0;i<m;i++)
{
sum=0;
for(j=0;j<n;j++)
sum+=a[k][j]*b[j][i];
c[k][i]=sum;
}
}
这是我写好的,不过我是用C++写的(我电脑里没有C的环境),你如果有C++的话,就可以直接运行了,如果是C的话,就把那些输入输出改一下就行了。比如C++里输入用的是"cin>>"你就把那一行改成C的scanf,C++的输出是用"cout<<",你也是把相应的行改成C的printf就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
心中风情4
2013-10-10 · TA获得超过2247个赞
知道大有可为答主
回答量:1779
采纳率:66%
帮助的人:1085万
展开全部
#include<stdio.h>
#include<stdlib.h>
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();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
嘲笑自己rain
2013-10-10 · 超过10用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:21.6万
展开全部
/////////////////////////////////////////第一个程序,在VC++ 6.0下测试无误///////////
#include<stdio.h>
#include<math.h>
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<stdio.h>
#include<math.h>

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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王海星空
2013-10-10 · 超过23用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:51.3万
展开全部
2.
#include<iostream>
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<<a%i<<' ';
}
cout<<endl;
return 0;
}
第一题不会……
望采纳!
追问
有输出吗
追答
有啊,不过我是c++编的,cout是输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式