求助c语言编程题
#include
int main(void)
{
FILE *fp;
int a[100];
int i=0;
int j,temp;;
if((fp=fopen("text.txt","rb"))==NULL)
{
printf("error!");
exit(1);
}
while(fscanf(fp,"%d",&a[i])==1&&++i<100)
; //将文件中100个数读入数组中
fclose(fp); //关闭文件
for(i=0;i<99;i++) //将数组中100个数进行冒泡排序
for(j=i+1;j<100;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
if((fp=fopen("text1.txt","w"))==NULL) //以写方式打开另一个文件
{
printf("error!");
exit(1);
}
for(i=0;i<100;i++)
fprintf(fp,"%d
1",a[i]);
fclose(fp);
return 0;
}
我帮你实现了,有不看懂追我吧,需要读的文件也附给你了,望采纳
#include
#define N 50
main()
{int a[N],max,min,i,m,n,j;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
max=min=a[0];
for(i=0;i<N;i++)
if(a[i]>max)
{max=a[i];m=i;}
for(j=0;j<5;j++)
if(a[j]<min)
{min=a[j];n=j;}
printf("max=%d,所在位置是%d,min=%d,所在位置是%d
",max,++m,min,++n);
}
#include <iostream>
using namespace std;
void converse(int m,int z)
{
int i=0,j;
int a[50],b[50];
while(m!=0)
{
a[i]=m%z;
if(a[i]>9)
switch(a[i])
{
case 10:a[i]='A';break; //这里是将A的ASCII码值存入a[i],因为定义a[50]为int类型的
case 11:a[i]='B';break;
case 12:a[i]='C';break;
case 13:a[i]='D';break;
case 14:a[i]='E';break;
case 15:a[i]='F';break;
}
m=m/z;
i++;
}
int k=i;
int t=i;
for(j=0;j<k;j++)
{
b[--t]=a[j]; //注意自减运算符与自增运算符的不同
}
for(j=0;j<i;j++)
{
if(b[j]<=9)
cout<<b[j]<<" ";
else
cout<<(char)b[j]<<" "; //将ASCII码值转换为对应的字符输出
}
}
void main()
{
cout<<"输入整数m和进制数z"<<endl;
int m,z;
cin>>m>>z;
converse(m,z);
}
忘了,你是要用C语言写的,上面写成了C++的了
修改如下:
#include <stdio.h>
void converse(int m,int z)
{
int i=0,j;
int a[50],b[50];
while(m!=0)
{
a[i]=m%z;
if(a[i]>9)
switch(a[i])
{
case 10:a[i]='A';break; //这里是将A的ASCII码值存入a[i],因为定义a[50]为int类型的
case 11:a[i]='B';break;
case 12:a[i]='C';break;
case 13:a[i]='D';break;
case 14:a[i]='E';break;
case 15:a[i]='F';break;
}
m=m/z;
i++;
}
int k=i;
int t=i;
for(j=0;j<k;j++)
{
b[--t]=a[j]; //注意自减运算符与自增运算符的不同
}
for(j=0;j<i;j++)
{
if(b[j]<=9)
printf("%2d",b[j]);
else
printf("%2d",(char)b[j]); //将ASCII码值转换为对应的字符输出
}
}
void main()
{
printf("输入整数m和进制数z");
int m,z;
scanf("%d%d",&m,&z);
converse(m,z);
}
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<math.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int Status;
typedef char elemtype;
typedef int elemtype2;
typedef struct{
elemtype *base;
elemtype *top;
int stacksize;
}Stack;
typedef struct{
elemtype2 *base;
elemtype2 *top;
int stacksize;
}Stack2;
Status InitStack(Stack &S)
{
S.base=(elemtype *)malloc(STACK_INIT_SIZE*sizeof(elemtype));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return 1;
}
Status Push(Stack &S,elemtype e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(elemtype *)realloc(S.base,
(S.stacksize+STACKINCREMENT)*sizeof(elemtype));
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++ =e;
return 1;
}
Status Pop(Stack &S,elemtype &e)
{
if(S.top==S.base) return 0;
e=* --S.top;
return 1;
}
Status InitStack2(Stack2 &S)
{
S.base=(elemtype2 *)malloc(STACK_INIT_SIZE*sizeof(elemtype2));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return 1;
}
Status Push2(Stack2 &S,elemtype2 e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(elemtype2 *)realloc(S.base,
(S.stacksize+STACKINCREMENT)*sizeof(elemtype2));
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++ =e;
return 1;
}
Status Pop2(Stack2 &S,elemtype2 &e)
{
if(S.top==S.base) return 0;
e=* --S.top;
return 1;
}
void conversion(int b,int number)
{
elemtype2 e;
Stack2 s2;
InitStack2(s2);
while(number)
{
Push2(s2,number%b);
number=number/b;
}
if(b!=16)
{
while(s2.top!=s2.base)
{
Pop2(s2,e);
printf("%d",e);
}
printf("\n");
}
else
{
while(s2.top!=s2.base)
{
Pop2(s2,e);
if(e<=9) printf("%d",e);
else if(e==10) printf("a");
else if(e==11) printf("b");
else if(e==12) printf("c");
else if(e==13) printf("d");
else if(e==14) printf("e");
else if(e==15) printf("f");
}
printf("\n");
}
InitStack2(s2);
}
int main()
{
elemtype num[10],e;
Stack s;
int ans,length,i,temp,exp,base,sum;
while(1)
{
InitStack(s);
sum=0;
//temp=0;
exp=0;
//printf("%d\n",sum);
printf("请选择被转化的数值类型:\n");
printf("1---16进制\n2---10进制\n3---8进制\n4---2进制\n5---退出\n");
scanf("%d",&ans);
if(ans==1) base=16;
else if(ans==2) base=10;
else if(ans==3) base=8;
else if(ans==4)base=2;
else if(ans==5) return 0;
else {
printf("输入错误!\n");
break;
}
printf("请输入数值:\n");
scanf("%s",num);
//printf("%s\n",num);
length=strlen(num);
//printf("长度:%d\n",length);
for(i=0;i<length;i++)
Push(s,num[i]);
while(s.top!=s.base)
{
Pop(s,e);
if(e>='0'&&e<='9')
{
temp=e-'0';
//printf("temp:%d\n",temp);
sum+=temp*pow(base,exp);
exp++;
//printf("对应的十进制数:%d\n",sum);
}
if(e>='a'&&e<='f')
{
temp=e-'a'+10;
sum+=temp*pow(base,exp);
exp++;
//printf("对应的十进制数:%d\n",sum);
}
}
//printf("对应的十进制数:%d\n",sum);
printf("请选择要转化为的数制:\n");
printf("1---16进制\n2---10进制\n3---8进制\n4---2进制\n");
scanf("%d",&ans);
if(ans==1) base=16;
else if(ans==2) base=10;
else if(ans==3) base=8;
else if(ans==4) base=2;
else
printf("输入错误!\n");
conversion(base,sum);
}
}
我是在VC++ 6.0下编译通过的,程序没问题.
这个程序我调试过,正确的,没有错。
这种递归函数的方法即容易理解,又不需要用数组,很好!
#include <stdio.h>
#include <stdlib.h>
void trans(int n,int m)
{
if(n)
{
trans(n/m,m);
printf("%d",n%m);
}
}
void main()
{
int n,m;
printf("输入十进制数N和转化的进制数M:");
scanf("%d%d",&n,&m);
printf("十进制数%d转化成%d进制后的结果为:",n,m);
trans(n,m);
printf("\n");
}
答:a[i] = 10* (i+2-5*(i>2)) % 6;当i = 0时候 a[0] = 10* (0+2-5*(0>2)) % 6; //(0>2)为判断语句,0大于2为假 ,结果是0 = 10* (0+2-5*0) % 6 = 20 % 6 //取余数 = 2 当i = 1时候 a[1] = 10* (1+2-5*(1>2)) % 6; //(1>2)为判...
答:A不完全正确,旧版C不能把共用体变量作为函数参数,C99允许共用体变量作为函数参数。B不完全正确,不能直接对共用体变量名赋值数值(但是可以用同类型的共用体变量名进行赋值,比如同一种共用体变量a和b,可直接a=b)。C不完全正确,不能像结构体那样对所有成员初始化,共用体的成员地址不是独立的,...
答:您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!展开全部 include<stdio.h> int main (){ int grade,i,n,max=0,min=1000,num[500];printf("请输入一个数:");scanf("%d" , &n) ;if(n<2 || n>499) {printf(“数字个数...
答:以下是实现该程序的代码:include <stdio.h> int main() { char input[13]; // 存放输入的字符串 int i = 0;printf("请输入字符串:");while(i < 11) { input[i] = getchar(); // 从键盘读入字符 i++;} input[11] = 'G'; // 填充字符串 input[12] = 'K';printf("输出...
答:f = fopen(文章B路径,只读);while(能读到下一个单词){ addWord(读到的单词,flagB);++wordsCountB;} fclose(f);FILE* f = fopen(输出文件路径,写入);使用wordsCountA、wordsCountB、wcArray计算题目要求的数据,打印到屏幕,同时用fprintf函数将结果写入到输出文件。fclose(f);return 0;} ...
答:2011-05-09 c语言写入文件方法 209 2009-02-28 C语言编程软件 469 2010-06-23 c语言在线高手 9 2009-11-14 c语言图形编程的教程书 19 2014-01-12 C语言问题求解答 5 更多关于c语言的知识 > 正在求助 换一换 回答问题,赢新手礼包 苦等1分钟: 高中生对蓝光过敏要怎么治? 被电脑或手机照射到...
答:一、统计输入的字符个数 同学们在学习C语言课程中,经常会遇到一道题,就是要求你写一个C程序,这个C程序能够读取你从键盘上输入的字符,并且统计其中的字符个数,最后输出总的字符个数并且把这些输入的字符再输出来。不少同学遇到这道题没啥思路,不知该如何上手。其实需要按照分解题目、每个分解的...
答:按照题目要求编写的C语言程序如下 第一题加权求和的程序如下 include<stdio.h> int add(int array[3],int w1,int w2,int w3){ return array[0]*w1+array[1]*w2+array[2]*w3;} int main(){ int i,a[3],w1,w2,w3;for(i=0;i<3;i++)scanf("%d",&a[i]);scanf("%d%d%d",&...
答:源程序的每一句解释(见注释),运行结果,程序的功能和运行结果分析如下 include<stdio.h> void main(){ union//定义一个包含长整型和字符型数组的联合结构 { long b;//定义一个长整型 char c[4];//定义一个字符型数组 }s;//定义一个联合结构的变量s s.b= 0xa0000L;//对联合中的长整型...
答:"a%c",c1得到输出[aa]"a%c b",再输出空格和字符b[aa b]"a%c b%c",c2得到输出[aa bb]"a%c b%c\t",因当前输出已经占用5个字符所以下个制表位是第9个字符位置,应输出3个空格[aa bb ]"a%c b%c\tc",输出字符c[aa bb c]"a%c b%c\t%c",c3输出字符c[aa bb ...