A. 求解一道c语言基础编程题。
#include <stdio.h>
#define N 60 //宏定义便于替换和检测
void Scanf(float *a,int n) //输入函数
{ scanf("%f",&a[n]);}
void sort(float *a,int n) //排序函数{ int i,j; float t; for(i=0;i<n-1;i++) //选择排序法 { for(j=i+1;j<n;j++) { if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } }}void Printf(float *a,int n) //输出函数{ printf("%d# %.2fm ",n+1,a[n]);//输出格式}int main (void){ float a[N]; int i; for(i=0;i<N;i++) Scanf(a,i); sort(a,N); for(i=0;i<N;i++) Printf(a,i);}
望采纳
B. 求道C语言基础编程题
//第一题:
#include<stdio.h>
main()
{
int
a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
//输入三个数a,b,c
if(a<b)
{
t=a;a=b;b=t;
}
if(a<c)
{
t=a;a=c;c=t;
}
if(b<c)
{
t=b;b=c;c=t;
}
printf("%d>%d>%d\n",a,b,c);
}
//第二题:
#include<stdio.h>
#include<math.h>
void
main()
{
float
a,b,c,s,k;
printf("请输入三边的值:");
scanf("%f%f%f",&a,&b,&c);
k=(a+b+c)/2.0;
s=sqrt(k*(k-a)*(k-b)*(k-c));
printf("面积为:%.3f\n",s);
}
这两个题目很简单啊!
不知道是否合你要求??
呵呵,给我分吧!
C. 求解一道C语言基础编程题。。
举个例子你就懂了,以16进制的2ABC为例,16进制转为10进制的方法,就是从右到左,依次用该位的数字乘以16的0次方、16的1次方、16的2次方(同样如果是其它进制,比如8进制,那就是8的0次方、1次方等等)。。之和,比如说2ABC转10进制,就等于
2ABC(16)=C*1+B*16+A*16*16+2*16*16*16
你上面这个代码就是模拟这个过程,从最后一位起,先将字符转为实际对应的数字,比如说输入的是2A,那么'A'对应的数字就是10+'A'-'A'=11,同样的'2'对应的数字就是'2'-'0'=2(或者'2'-48=2,48即'0'的ascii)得到的数字放在n里,然后用t来计算每一次该乘以多少(比如最后一位,t就是1,倒数第二位,t就是16,倒数第三位,t就是16*16),之后再通过sum+=n*t累加。
while (s[len]!='\0') len++; //通过循环获取长度,实际上在string.h里有strlen可以直接获取
i=len-1;
while (s[i]!='\0') { //循环开始
n=0;
if (s[i]>='0'&&s[i]<='9') //if else计算每一位实际对应的10进制数字
n=s[i]-48;
else if (s[i]>='A'&&s[i]<='F')
n=10+s[i]-'A';
t=1;
for (j=0; j<len-i-1; j++) t=t*k; //计算当前位应该乘以多少,比如i起始是len-1,那么j=0;j<len-i-1实际上就是j<0;没有循环,t为1,下一次循环i是len-2,j<len-(len-2)-1即为j<1,循环一次,t=1*16=16,同样,再下一次就是16*16
printf("****%d\n",t);
sum += n*t;//累加
i--;
}
不过这样写确实有些繁琐,也没啥必要,可以是
int base(int k,char s[])
{
int len=0,sum=0;
int i,n;
while (s[len]!='\0') len++;
for(i=0;i<len;i++)
{
if (s[i]>='0'&&s[i]<='9')
n=s[i]-48;
else if (s[i]>='A'&&s[i]<='F')
n=10+s[i]-'A';
sum=sum*k+n;
}
return sum;
}
D. C语言编程题,拜托大家
(已补充排序功能!基本冒泡排序!)
通过Ascii码来识别按键。
输入采用getch函数获取字符再转数字。
由于getch不在控制台显示,自定义函数实现回显。
代码实现了录入,删除功能。
录入只识别数字,其他字符按了也没用。
退格键一次删一个字符,可以跨行删除。
回车确认一个数字的输入,下次输入新数字自动换行(回车后光标不换行,另外删除当前行可以反退到上一行)。
Ctrl+D结束程序。
注意:getch函数在windows系统下正常。linux系统下不一定能运行。
另外,我没有写数值大小验证,数组变量是int型,如果你输入超出数值类型上限还是会报错的,想要输入更大的数字,可以换longlong性。想加验证,自己在代码里加好了,可以加在输入接收的位置。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAXS 100//数组大小
void showList(int *nums,int n,int flag);//打印数组
int inputNums(int *nums,int maxSize);//输入maxSize个以内的数字保存在maxSize中,返回输入的数字个数
void px(int *nums,int n);//升序排列
int main()
{
int nums[MAXS],n=MAXS,cnt;
cnt=inputNums(nums,n);
px(nums,cnt);
printf(" 升序排序后的数字为: ");
showList(nums,cnt,1);
return 0;
}
int inputNums(int *nums,int maxSize)//输入maxSize个以内的数字保存在maxSize中,返回输入的数字个数
{
int i=1,cnt=0,n=MAXS,flag=0;//flag:待保存标识;1:标识有数据待保存2:无数据待保存
char c=0;
while(i<=n)
{
c=getch();
if(c!=13 && c!=4 && c>='0' && c<='9')//输入只接收并回显数字字符
{
if(!flag)
nums[cnt]=0,cnt++,flag=1;
nums[cnt-1]=nums[cnt-1]*10+c-'0';
}
if(c==8 && cnt>0)//退格删除
{
if(nums[cnt-1]/10>0)//当前输入数字大于1位,则删除一位输入
nums[cnt-1]=nums[cnt-1]/10;
else if(nums[i-1]/10==0)//当前输入数字只剩下1位,则删除当前输入的数值,数组个数-1
{
nums[cnt-1]=0,cnt--;
if(cnt==0)
flag=0;
else
i--,flag=1;
}
}
if(c==13)//回车
i++,flag=0;
if((c>='0' && c<='9')||c==13||c==8)
system("cls"),showList(nums,cnt,0);
if(c==4)//ctrl+D
{
if(flag)
flag=0;
break;
}
}
printf(" 输入的数字为: ");
showList(nums,cnt,1);
return cnt;
}
void px(int *nums,int n)//升序排列
{
int i,j,num;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(nums[i]>nums[j])
{
num=nums[i];
nums[i]=nums[j];
nums[j]=num;
}
}
}
void showList(int *nums,int n,int flag)//打印数组,flag:1打印模式;flag:0显示模式
{
int i;
if(flag && n>0)
{
printf(" ");
for(i=0;i<n;i++)
printf("%d ",nums[i]);
printf(" ");
}
else if(!flag && n>0)
{
for(i=0;i<n-1;i++)
printf("%d ",nums[i]);
printf("%d",nums[i]);
}
}
E. 有关C语言的基本编程考题
则他会忘掉见过的事物。
只有燃烧的泪水留在眼中。
让他跪下,把脸俯向草地,
看着从地面反射出的光线。
那里他将常常找到我们失去的一切:
星星和玫瑰,黄昏和黎明。
F. c语言编程题
#include <stdio.h>
#include <math.h>
int main()
{
double x,y;
scanf("%lf",&x);
if(x<=-2)
y=-pow(exp(1),2*x+1)+3;
else if(x<=3)
y=2*x-1;
else
y=2*log10(3*x+5)-11;
printf("%lf ",y);
return 0;
}
G. c语言基础编程题求解
#include <stdio.h>
#include <malloc.h>
#define stu struct student
stu
{ char name[20];
int age;
int wage;
stu *next;
};
stu *creat( void )
{ stu *p,*q,*h;
int i;
for(i=0; i<3; i++)
{ p=(stu*)malloc(sizeof(stu));
scanf("%s%d%d",p->name,&(p->age),&(p->wage));
if(i==0)h=q=p;
else q->next=p,q=p;
}
q->next=NULL;
return h;
}
void output( stu *p )
{ while ( p != NULL )
{ printf( "%s: ", p->name );
printf( "age=%d wage=%d ", p->age, p->wage );
p = p->next;
}
}
int main()
{ stu *p;
p = creat( );
output( p );
}
H. 求解C语言基础编程题
#include <stdio.h>
int main()
{ int i,j,x,a[11]= {0};
char c='n';
do
{ scanf("%d%c",&x,&c);
a[x]++;
}
while(c!=' ');
for(i=1; i<11; i++)
{ printf("%d %d ",i,a[i]);
for(j=0; j<a[i]; j++)
printf("*");
printf(" ");
}
return 0;
}
I. C语言基础编程题一小题,谢谢!
#include<stdio.h>
int main() {
int n,s=0;
scanf("%d",&n);
s=(n%10)*100+(n/10%10)*10+n/100;
printf("%d",s);
}
J. c语言编程题
voidfun1(chars[]){
while(*s){
if(*s>='a'&&*s<='z'){*s-='a';*s+='A';}
elseif(*s>='A'&&*s<='Z'){*s-='A';*s+='a';}
s++;
}
}
voidfun2(chars[]){char*p,a;
p=s;while(*p)p++;
p--;a=*s;*s=*p;*p=a;
}
voidfun3(chars[],intc[3]){
c[0]=c[1]=c[2]=0;
while(*s){
if(*s>='0'&&*s<='9')c[0]++;
elseif(*s>='a'&&*s<='z')c[1]++;
elseif(*s>='A'&&*s<='Z')c[1]++;
elseif(*s=='')c[2]++;
s++;
}
}
printf("字母个数=%d 空格个数=%d ",count[1],count[2]);