1.编一个程序,输入一个十进制败,输出与之等价的八进制数。
#include <stdio.h>
void tentoeight(){
int n;
scanf("%d",&n);
int A[40];
int num=0;
while(n!=0){
A[num++]=n%8;
n/=8;
}
for(int i=num-1;i>=0;i--)
printf("%d",A[i]);
}
int main(){
tentoeight();
}
2.用两个正整敷来精确表示个正真分数,其中,一个表示分子,另一个表示分母,例如,(3,9)表示九分之三,编一个程序,输入100个这样表示的分数,要求:
(1)把所有的分数都化为简分数
(2)把化简后的分数按从小到大的顺序输出
#include <stdio.h>
typedef struct frac {
int up,down;
} frac;
int gcd(int a,int b) {
if(b==0)
return a;
else
return gcd(b,a%b);
}
void sort(struct frac list[],int n) {
for(int i=0; i<n-1; i++)
for(int j=0; j<n-i-1; j++)
if(1.0*list[j].up/list[j].down>1.0*list[j+1].up/list[j+1].down) {
frac temp=list[j];
list[j]=list[j+1];
list[j+1]=temp;
}
}
void getfra() {
frac list[100];
for(int i=0; i<100; i++)
scanf("%d %d",&list[i].up,&list[i].down);
for(int i=0; i<100; i++) {
int flag=gcd(list[i].up,list[i].down);
list[i].up/=flag;
list[i].down/=flag;
}
sort(list,100);
for(int i=0; i<100; i++)
printf("(%d %d)",list[i].up,list[i].down);
}
3.编个程序,判断输入的字符审是否属于集合
属于,输出Y,不属于,输出N
例如:abbbdd,aaccd,abbcd,aaadddd是集合中的元素
#include <stdio.h>
void istrue() {
char str[100];
scanf("%s",str);
int na=0,nb=0,nc=0,nd=0;
int i=0;
while(str[i]!='\0') {
if(str[i]=='a')
na++;
else if(str[i]=='b')
nb++;
else if(str[i]=='c')
nc++;
else if(str[i]=='d')
nd++;
i++;
}
if(na>0&&nb>=0&&nc>=0&&nd>0)
printf("Y");
else
printf("N");
}
4.前缀表达式和后缀表达式的文法分别为:
前缀表达式
后缀表达式
编一个程序,输入一个前缀表达式,输出一个与之等价的后缀表达式,假设输入的前缀表达式没有语法错误(记)
#include <stdio.h>
void intoput() {
char s[50];
char stack[30];
scanf("%s",s);
int top=-1,i=0;
while(s[i]!='\0') {
if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')
stack[++top]=s[i];
else if(s[i]==')') {
printf(")");
printf("%c",stack[top--]);
} else
printf("%c",s[i]);
i++;
}
}