c语言进制转换函数,输入多组数据,每组数据是一个罗马数字,怎样输出他所表示的十进制数? 不要用指针,我们才学

数据交换输出——C语言_百度知道
数据交换输出——C语言
i&lt?,每行的开始是一个整数n;
for(i=0;n,将它与最前面的数交换后输出这些数;i++)
if(a[i]&lt??。Output对于每组输入数据,跟着就是n个整数,&n);%d&i&%d &quot,temp?#include&
count=0??;
for(i=0?。n=0表示输入的结束。Input输入数据有多组??,每组占一行;i&lt??,每组输出占一行???。Sample Input4 2 1 3 45 5 4 3 2 10Sample Output1 2 3 41 4 3 2 5哪里出了问题;100)个数??,不做处理????;
for(i=0,输出交换后的数列,a[100]??;
a[count]=a[count-1];i++)
printf(&quot?;i++)
scanf(&quot?;n?;,i;int main(){
while(scanf(&quot?,找出其中最小的数;
a[count-1]=temp,min)
min=a[i]?,表示这个测试实例的数值的个数;
temp=a[count]??.h&gt,a[i]);%d&quot,&a[i]),count?!=EOF)
if(n==0);???Problem Description输入n(n&lt?;n
我写的是与最小数前面的数交换
提问者采纳
count 是用来记录最小的数的下标。找出其中最小的数;
count=i。。要注意输出一组数据后换行哟~要是还AC不过。,将它与最前面的数交换后输出这些数。应该是for(i=0,输出交换后的数列;i++)
if(a[i]&lt。与最前面的数交换也就是a[0]交换。第二。第二第一你没有读懂题意:对于每组输入数据。有点问题。题上要求;i&n:你的输出格式也有问题。要和min=a[i]在一个复合语句中,每组输出占一行。再提问:在找最小的数时候
提问者评价
其他类似问题
为您推荐:
其他1条回答
%d&,你太那个了。还有 谁教你的定义main,&n),很容易混淆,数组没输入数字吧,不要图方便,void main()一定要加上对于学C语言的来说,这要成习惯,还有 定义最好分开定义,&n), while(scanf(&%d&quot?!=EOF) 错误 应该为whilescanf(&quot,记住;?
数据交换的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁北邮计算机考研复试题的C语言解答精选
作者:低调小一
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了北邮计算机考研复试题目的C语言解答精选,选自2012年的一些基础的上机题目,需要的朋友可以参考下
&&& 题目描述:&
&&&   大家都知道,数据在计算机里中存储是以二进制的形式存储的。&
&&&   有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。&
&&&   你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。&
&&& 输入:&
&&& 第一行,一个数字T(T&=1000),表示下面要求的数字的个数。&
&&& 接下来有T行,每行有一个数字n(0&=n&=10^8),表示要求的二进制串。&
&&& 输出:&
&&& 输出共T行。每行输出求得的二进制串。&
&&& 样例输入:&
&&& 56275&
&&& 989835&
&&& 样例输出:&
&&& 10111&
没什么可说的,简单的机制转换,连大数除法都没考察!
#include &stdio.h&
#include &string.h&
#include &stdlib.h&
struct stack
int data[100];
void convert_to_binary(struct stack *s, unsigned long int d)
s-&top = 0;
while (d) {
s-&data[s-&top ++] = d % 2;
while (s-&top) {
printf("%d", s-&data[-- s-&top]);
printf("\n");
int main()
struct stack *s = (struct stack*)malloc(sizeof(struct stack));
while (scanf("%d", &n) != EOF) {
for (i = 0; i & i ++) {
scanf("%ld", &d);
if (d != 0) {
convert_to_binary(s, d);
printf("0\n");
&&& /**************************************************************
&&&&&&& Problem: 1473
&&&&&&& User: wangzhengyi
&&&&&&& Language: C
&&&&&&& Result: Accepted
&&&&&&& Time:10 ms
&&&&&&& Memory:904 kb
&&& ****************************************************************/&
二叉排序树
&&& 题目描述:&
&&&&&&&&&&& 二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:&
&&&&&&&&&&& 1. 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;&
&&&&&&&&&&& 2. 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;&
&&&&&&&&&&& 3. 左、右子树本身也是一颗二叉排序树。&
&&&   现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有父亲节点,则输出-1。&
&&& 输入:&
&&& 输入包含多组测试数据,每组测试数据两行。&
&&& 第一行,一个数字N(N&=100),表示待插入的节点数。&
&&& 第二行,N个互不相同的正整数,表示要顺序插入节点的关键字值,这些值不超过10^8。&
&&& 输出:&
&&& 输出共N行,每次插入节点后,该节点对应的父亲节点的关键字值。&
&&& 样例输入:&
&&& 2 5 1 3 4&
&&& 样例输出:&
没什么思路,最简单的构建二叉排序树而已
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
struct btree
struct btree *lchild, *
struct btree* create_btree(struct btree *t, unsigned long int d, unsigned long int parent);
int main()
struct btree *t;
while (scanf("%d", &n) != EOF) {
for (i = 0; i & i ++) {
scanf("%ld", &d);
t = create_btree(t, d, -1);
struct btree* create_btree(struct btree *t, unsigned long int d, unsigned long int parent)
if (t == NULL) {
t = (struct btree *)malloc(sizeof(struct btree));
t-&lchild = NULL;
t-&rchild = NULL;
printf("%ld\n", parent);
}else if(t-&data & d) {
t-&lchild = create_btree(t-&lchild, d, t-&data);
}else if(t-&data & d) {
t-&rchild = create_btree(t-&rchild, d, t-&data);
exit(EXIT_FAILURE);
&&& /**************************************************************
&&&&&&& Problem: 1467
&&&&&&& User: wangzhengyi
&&&&&&& Language: C
&&&&&&& Result: Accepted
&&&&&&& Time:10 ms
&&&&&&& Memory:904 kb
&&& ****************************************************************/&
&&& 题目描述:&
&&& 给定一个n*n的矩阵,求该矩阵的k次幂,即P^k。&
&&& 输入:&
&&& 输入包含多组测试数据。&
&&& 数据的第一行为一个整数T(0&T&=10),表示要求矩阵的个数。&
&&& 接下来有T组测试数据,每组数据格式如下:&&
&&& 第一行:两个整数n(2&=n&=10)、k(1&=k&=5),两个数字之间用一个空格隔开,含义如上所示。&
&&& 接下来有n行,每行n个正整数,其中,第i行第j个整数表示矩阵中第i行第j列的矩阵元素Pij且(0&=Pij&=10)。另外,数据保证最后结果不会超过10^8。&
&&& 输出:&
&&& 对于每组测试数据,输出其结果。格式为:&
&&& n行n列个整数,每行数之间用空格隔开,注意,每行最后一个数后面不应该有多余的空格。&
&&& 样例输入:&
&&& 4 8 4&
&&& 9 3 0&
&&& 3 5 7&
&&& 4 0 3 0 1&
&&& 0 0 5 8 5&
&&& 8 9 8 5 3&
&&& 9 6 1 7 8&
&&& 7 2 5 7 3&
&&& 样例输出:&
&&& 153 96&
&&& 108 81&
&&& 47 29 41 22 16&
&&& 147 103 73 116 94&
&&& 162 108 153 168 126&
&&& 163 67 112 158 122&
&&& 152 93 93 111 97&
这个也是挺简单的,就是个矩阵乘法,三个for循环即可
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#define LEN 15
int a[LEN][LEN], b[LEN][LEN], c[LEN][LEN];
void multiplay_matrix();
int main()
int t, n, k, i, j,
scanf("%d", &t);
while (t --) {
// 接收矩阵
scanf("%d %d", &n, &k);
for (i = 0; i & i ++) {
for (j = 0; j & j ++) {
scanf("%d", &d);
// 矩阵的幂
if (k != 1) {
multiplay_matrix(k, n);
for (i = 0; i & i ++) {
for (j = 0; j & j ++) {
if (j == n - 1) {
printf("%d\n", c[i][j]);
printf("%d ", c[i][j]);
void multiplay_matrix(int k, int n)
int i, j, h,
while (k --) {
for (i = 0; i & i ++) {
for (j = 0; j & j ++) {
for (h = data = 0; h & h ++) {
data += b[i][h] * a[h][j];
for (i = 0; i & i ++) {
for (j = 0; j & j ++) {
b[i][j] = c[i][j];
&&& /**************************************************************
&&&&&&& Problem: 1474
&&&&&&& User: wangzhengyi
&&&&&&& Language: C
&&&&&&& Result: Accepted
&&&&&&& Time:10 ms
&&&&&&& Memory:912 kb
&&& ****************************************************************/&
IP数据包解析
&&& 头部长度单位为4字节。&
&&&   你的任务是,简要分析输入数据中的若干个TCP数据段的头部。 详细要求请见输入输出部分的说明。&
&&& 输入:&
&&& 第一行为一个整数T,代表测试数据的组数。&
&&& 以下有T行,每行都是一个TCP数据包的头部分,字节用16进制表示,以空格隔开。数据保证字节之间仅有一个空格,且行首行尾没有多余的空白字符。&
&&& 保证输入数据都是合法的。&
&&& 输出:&
&&& 对于每个TCP数据包,输出如下信息:&
&&& Case #x,x是当前测试数据的序号,从1开始。&
&&& Total length = L bytes,L是整个IP数据包的长度,单位是1字节。&
&&& Source = xxx.xxx.xxx.xxx,用点分十进制输出源IP地址。输入数据中不存在IPV6数据分组。&
&&& Destination = xxx.xxx.xxx.xxx,用点分十进制输出源IP地址。输入数据中不存在IPV6数据分组。&
&&& Source Port = sp,sp是源端口号。&
&&& Destination Port = dp,dp是目标端口号。&
&&& 对于每个TCP数据包,最后输出一个多余的空白行。&
&&& 具体格式参见样例。&
&&& 请注意,输出的信息中,所有的空格、大小写、点符号、换行均要与样例格式保持一致,并且不要在任何数字前输出多余的前导0,也不要输出任何不必要的空白字符。&
&&& 样例输入:&
&&& 45 00 00 34 7a 67 40 00 40 06 63 5a 0a cd 0a f4 7d 38 ca 09 cd f6 00 50 b4 d7 ae 1c 9b cf f2 40 80 10 ff 3d fd d0 00 00 01 01 08 0a 32 53 7d fb 5e 49 4e c8&
&&& 45 00 00 c6 56 5a 40 00 34 06 e0 45 cb d0 2e 01 0a cd 0a f4 00 50 ce 61 e1 e9 b9 ee 47 c7 37 34 80 18 00 b5 81 8f 00 00 01 01 08 0a 88 24 fa c6 32 63 cd 8d&
&&& 样例输出:&
&&& Case #1&
&&& Total length = 52 bytes&
&&& Source = 10.205.10.244&
&&& Destination = 125.56.202.9&
&&& Source Port = 52726&
&&& Destination Port = 80&
&&& Case #2&
&&& Total length = 198 bytes&
&&& Source = 203.208.46.1&
&&& Destination = 10.205.10.244&
&&& Source Port = 80&
&&& Destination Port = 52833&
注意取源端口号和目的端口号时需要注意ip头部长度的判断,IHL,其它就没神马难度了
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#define LEN 1000
int change_tint(char *str, int begin, int num)
char *temp = (char *)malloc(sizeof(char) * (num + 1));
for(i = 0; i & i ++) {
temp[i] = str[begin + i];
temp[i] = '\0';
return strtol(temp, NULL, 16);
void ip_field(char *str, int begin, int num)
int i, flag,
for (i = 0, flag = 1; i & i += 2) {
ip = change_tint(str, begin + i, 2);
printf("%d", ip);
if (flag &= 3) {
printf(".");
printf("\n");
int main()
int index, i, j, n, length,
char ipstr[LEN], temp[LEN];
while (scanf("%d\n", &n) != EOF) {
if (n != 0) {
for (index = 1; index &= index ++) {
memset(ipstr, 0, sizeof(ipstr));
memset(temp, 0, sizeof(temp));
gets(temp);
// 去除空格
for (i = j = 0, length = strlen(temp); i & i ++) {
if (temp[i] != ' ') {
ipstr[j ++] = temp[i];
ipstr[j] = '\0';
// 当前测试数据的序号
printf("Case #%d\n", index);
// 整个ip数据包的长度
length = change_tint(ipstr, 4, 4);
printf("Total length = %d bytes\n", length);
// 源ip地址和目的ip地址
printf("Source = ");
ip_field(ipstr, 24, 8);
printf("Destination = ");
ip_field(ipstr, 32, 8);
// 源端口号和目的端口号
ihl = change_tint(ipstr, 1, 1) * 4 * 2;
printf("Source Port = %d\n", change_tint(ipstr, ihl, 4));
printf("Destination Port = %d\n", change_tint(ipstr, ihl + 4, 4));
printf("\n");
&&& /**************************************************************
&&&&&&& Problem: 1475
&&&&&&& User: wangzhengyi
&&&&&&& Language: C
&&&&&&& Result: Accepted
&&&&&&& Time:10 ms
&&&&&&& Memory:908 kb
&&& ****************************************************************/&
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具C语言如何实现输入多组数据测试_百度知道
C语言如何实现输入多组数据测试
循环按照格式读入每组数据即可。对于输入多组数据测试的情况,需要约定结束的类型,常用的有两种:1 当读入数据为一组特定值时,结束测试。比如每组2个整型数据,以空格分隔,当输入的两个数均为-1时,结束测试。代码可以写作:int&a,b;while(1){&&&&scanf(&%d%d&,&a,&b);&&&&if(a&==&-1&&&&b&==&-1)&//退出测试的条件。&&&&//测试代码。}2 当读到EOF时,结束测试。同样读入两个整型数据,以空格分隔,当读到EOF时结束测试。代码可以写作:int&a,b;while(scanf(&%d%d&,&a,&b)&!=&EOF)//当出现EOF时,结束测试。{&&&&//测试代码。}
其他类似问题
为您推荐:
提问者采纳
%d&quot。 这个没关系的;void main(){10%10))
/1000%10==n&#47#include&/Y
printf(&quot,等循环结束的时候,对应的输出文件和他的一致,就不需要把结果存起来;判断回文
printf(&,输入和输出数据放在不同的文件夹下面的;if(n==0)No,那就用一个数组把答案存起来;%d&quot!=EOF)然后在循环里加一句if(n==0)n&),&n),&n),这样也是对的; }}这个代码应该是对的,所以; {
&#47,多组数据都是这么处理的。如果你真的想那样,因为OJ系统在判断答案的时候!=EOF,在OJ上,你的程序就是正确的.&#92.h&/或者写成while(scanf(&quot.&#92,只要它的输入文件在你的程序下运行;,提交的时候; while(scanf(&10000==n%10)&&(n/);n&stdio,n)
提问者评价
非常感谢。
其他2条回答
/ for(i=0;int main(){%d& while(1) {
int a[100];%d
&%d&i++) //stdio,&a[i]);;#include&;i++)
scanf(&quot,a[i]);
for(i=1,&a[0]);
printf(& } return 0;//实现代码 /a[i-1].h&a[i]
输入的数据用一个循环就可以了。
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言设计。有多组测试数据,每组一行,输入一个正整数N。对于每组数据输出一行,计算1+2+3+...+N的和_百度知道
C语言设计。有多组测试数据,每组一行,输入一个正整数N。对于每组数据输出一行,计算1+2+3+...+N的和
提问者采纳
for(i=1;i&void main(){
while(scanf(&%d&quot#include&lt,&N)){
sum=0;n&quot,sum); printf(&%d\
提问者评价
好厉害···谢啦
其他类似问题
为您推荐:
其他1条回答
6,5;while(n&gtfunc(int n){int sum=0,8;for(i==0;n&i++)printf(&quot,2;0){sum+=n,func(a[i]));%d&#92,9};}}void main(){int i,4,7;int data[]={1;i&lt,3;;9
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言拼数字问题多组数据每组数据为一行字符串,输入一个空行时结束.对每行求出所得整数的最大因子,若没有整数或为0即输出0.比如*&)0(*&……)3*9& 这里拼出来的是039,最大因子是13,求大神给思路
誓言LOVE悦205
#include&stdio.h&#include&string.h&#include&&math.h&void&fun(){\x09printf(&求最大因子自己做吧\n&);}void&main(){\x09int&i,j=0,sum=0,a[99]={0},k=0,b[99]={0};\x09char&str[99];\x09gets(str);\x09for(i=0;i&strlen(str);i++)\x09{\x09\x09if(isdigit(str[i])!=0){a[j]=str[i]-48;j++;}\x09}\x09for(i=j-1;i&=0;i--)&{b[k]=a[i];k++;}\x09for(i=0;i&j;i++)&sum=b[i]*pow(10,i)+\x09printf(&sum=%d\n&,sum);}
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 c语言进制转换 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信