100分求解简单C语言题(麻烦“星羽”进来下)
to 星羽: 感谢你写下面多参数程序例子,我用的是VC6。0,运行不了。。。4个警告3个错误
void _printf(char *format, ...)
{
va_list argptr;
va_start (argptr, format);
while (*format)
{
switch (*format)
{
case 's ':
printf( "Printing a string:%s\n ",(char *) va_arg(argptr, char *));
break;
case 'c ':
printf( "Printing a char:%c\n ", (char) va_arg(argptr,int));
break;
case 'd ':
printf( "Printing a integer:%d\n ", (int) va_arg(argptr,int));
break;
}
format++;
}
va_end(argptr);
}
void main()
{
_printf( "sd ", "adfasdf ", 1);
system( "pause ");
}
1)用C语言实现不定参数的函数的例子, 越简单越好。
2)书上两题程序题
用C语言编程实现求下面两个方程组的a, b的近似解(越近似越好)(两个程序分开写, 不然我怕到时看不懂) "^ "表示平方
1)7.9 = a * (b ^ 70)
47.25 = a * (b ^ 160)
2)80 = a * (b ^ 7.9)
150 = a * (b ^ 38.85)
3)如何初始化结构体指针?请看下面程序:我无论用哪种方式初始化指针L, 都可以正常运行,第一句初始化只分配了4个字节,怎么可以给结构里面变量赋值呢?谁详细讲解下两种方式的差别?(VC6.0)
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <math.h>
struct student
{
int num;
float score;
};
typedef struct student *List;
int main(void)
{
List L = (List)malloc(sizeof(List));
//List L = (List)malloc(sizeof(struct student));
L-> num = 10;
L-> score = 50;
return 0;
}
4)(我要例子)动态增加数组大小,比如原来a[10],程序需要扩充到a[12],怎么实现呢?
5)下面程序,先按“1”创建“34”的表,再按“1”创建“34”的表,为什么会异常?我不知道什么原因,谁能讲解下?
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <math.h>
//定义结构
struct snode
{
int data;
int next;
};
typedef struct snode *link;
struct list
{
int first;
int usableFirst;
int maxSize;
link node;
};
typedef struct list *List;
//实现部分
List CreateList(int size)
{
int data;
int i;
List L = (List)malloc(sizeof(List));
L-> node = (link)malloc(size * sizeof(link));
for (i = 0; i < size - 1; i++)
{
L-> node[i].next = i + 1;
}
L-> node[i].next = -1;
L-> maxSize = size;
//输入数据
printf( "请输入数据(0结束):\n ");
scanf( "%d ", &data);
L-> first = (data == 0) ? -1 : 0;
L-> usableFirst = 0;
i = L-> first;
while (data != 0 && i != -1)
{
L-> node[i].data = data;
i = L-> node[i].next;
L-> usableFirst++;
scanf( "%d ", &data);
}
if (i != -1)
{
L-> node[i].next = -1;
}
return L;
}
void PrintList(List L)
{
int i;
printf( "\n表输出:\n ");
for (i = L-> first; i != -1; i = L-> node[i].next)
{
printf( "%d\n ", L-> node[i].data);
}
printf( "\n ");
}
int main(void)
{
int choice;
int size;//表大小
List myTable;
printf( "2.5 用游标实现表\n ");
do
{
printf( "1 -- 创建表\n ");
printf( "8 -- 打印表\n ");
printf( "0 -- 退出\n ");
printf( "请选择: ");
while (scanf( "%d ", &choice) != 1)
{
fflush(stdin);
printf( "输入错误,请重新输入\n ");
}
switch (choice)
{
case 1:
printf( "请输入你要创建的表的大小: ");
scanf( "%d ", &size);
myTable = CreateList(size);
break;
case 8:
PrintList(myTable);
break;
case 0:
break;
default:
break;
}
}while (choice != 0);
return 0;
}
[解决办法]
参考我的这篇文章
http://blog.tianya.cn/blogger/post_show.asp?idWriter=0&Key=0&BlogID=462085&PostID=8350482
[解决办法]
关于变参,网上很多资料
我表达能力不怎么样,无法很清晰告诉你
到网看看文章
http://study.feloo.com/computer/pro/c/jiqiao/200506/37419.html
。。。