A. 如何用c语言或java实现改变桌面图标的坐标位置,用到什么api求大神解答,给出具体可行的代码一
voidC***::OnSetDeskIcon()
{
HWNDhwndParent=::FindWindow("Progman","ProgramManager");
HWNDhwndSHELLDLL_DefView=::FindWindowEx(hwndParent,NULL,"SHELLDLL_DefView",NULL);
HWNDhwndSysListView32=::FindWindowEx(hwndSHELLDLL_DefView,NULL,"SysListView32","FolderView");
intNm=ListView_GetItemCount(hwndSysListView32);
intsNm=0;
if(Nm>=10)
{
sNm=10;
}else{
sNm=Nm;
}
for(inti=0;i<sNm;i++)
{
intx=400+150*cos(i*36*3.1415926/180);
inty=400+150*sin(i*36*3.1415926/180);
::SendMessage(hwndSysListView32,LVM_SETITEMPOSITION,i,MAKELPARAM(x,y));
}
ListView_RedrawItems(hwndSysListView32,0,ListView_GetItemCount(hwndSysListView32)-1);
::UpdateWindow(hwndSysListView32);
}
桌面的图标位置是在SysListView32里保存的, 这个程序就是用来修改的.
虽然没看懂.....不过看起来很麻烦.........
B. c语言能修改已赋值的变量地址吗有什么意义
估计你概念搞混淆了,c语言中所有变量的地址都是不能修改的,变量定义后,当第一次使用系统会给它分配一块内存,直到它消亡是不会改变的。
指针变量,每次改变的其实也是指针变量里面存放的值。比如 int a,b,*p;
p=&a 相当于p里面存放了a的地址,假设a所在内存单元(地址)为100,a的值为3,即p的值是a的地址(p=100),*p 是取 100这个内存单元中存放的值,所以*p就是去100这个单元中存放的值(*p=a=3)。
然后 p=&b,这个时候p里面存放了b的地址,*p 是取 p内存单元中存放的值,所以*p就是b的值(*p=b)。但a,b,p所在的位置都没有变。
指针存在的意义在于,我可以通过一个指针去访问不同内存单元,这样相当于统一了入口。
C. C语言数组元素前后位置互换
#include<stdio.h>
char array[2][3];
void func(char array[2][3],int x1,int y1,int x2,int y2){
char t;
t=array[x1][y1];
array[x1][y1]=array[x2][y2];
array[x2][y2]=t;
}
int main(){
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%c",&array[i][j]);//注:连续输入二维数组的值,不用加回车
func(array,0,1,1,1);
for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%c ",array[i][j]);
printf("\n");
}
return 0;
}
D. C语言中写文件如何改变文件存放的位置
通过设置目标文件路径,可以改变文件的存放位置。
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。一般的C语言教程都有文件操作一章,可以找本教材进一步学习。
2、例程:
#include<stdio.h>
inta;
charb,c[100];
intmain(){
FILE*fp1=fopen("input.txt","r");//打开输入文件
FILE*fp2=fopen("output.txt","w");//打开输出文件
if(fp1==NULL||fp2==NULL){//若打开文件失败则退出
puts("不能打开文件!");
rturn0;
}
fscanf(fp1,"%d",&a);//从输入文件读取一个整数
b=fgetc(fp1);//从输入文件读取一个字符
fgets(c,100,fp1);//从输入文件读取一行字符串
printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数
fputs(c,fp2);//向输出文件写入一行字符串
fputc(b,fp2);//向输出文件写入一个字符
fprintf(fp2,"%d",a);//向输出文件写入一个整数
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return0;
}
E. 关于c语言用函数交换数位置的程序
你的 swap 只是将a[0],a[1]复制了副本过去并交换,所以结果不影响main中的 a 数组。
需要使用指针来操作。
#include<stdio.h>
voidswap(int*x,int*y)
{
intz;
z=*x;
*x=*y;
*y=z;
}
voidmain()
{
inta[2]={1,2};
swap(a,a+1);
printf("%d%d",a[0],a[1]);
}
F. C语言;如何交换两个数的位置
要下班了,你照着我这个程序改一下吧。
/*22_4:将两个矩阵相加*/
#include <stdio.h>
void add(int x[][4],int y[4][4]) /*不需要返回值,a数组元素已被改变*/
{
int i,j; /*两层循环变量*/
for(i=0;i<4;i++)
for(j=0;j<4;j++)
x[i][j]+=y[i][j];
return;
}
main()
{
int i,j; /*两层循环变量*/
int a[4][4]=
{
{1,2,3,4},
{5,6,7,8},
{1,1,1,1},
{1,1,1,1}
};
int b[4][4]=
{
{1,2,3,4},
{5,6,7,8},
{3,3,3,3},
{3,3,3,3}
};
add(a,b); /*调用函数时如此简单*/
/*输出相加后的矩阵*/
printf("两矩阵相加得:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
这个是我在跟公司师傅学C语言写的一个
G. c语言 编程如何把坐标输入
代码如下:
1、用gotoxy和gets吧。例如:
gotoxy(old_x,old_y);//跳转到指定坐标输出信息
cprintf("User Name:");//在指定坐标处输出User Name:
gotoxy(old_x,old_y+2);//跳转到指定坐标输入信息
gets(name);//输入用户名,name为所定义的字符数组
2、原型:extern void gotoxy(int x, int y);
用法:#include <system.h>
功能:将光标移动到指定位置说明:gotoxy(x,y)将光标移动到指定行y和列x。设置光标到文本屏幕的指定位置,其中参数x,y为文本屏幕的坐标。
gotoxy(0,0)将光标移动到屏幕左上角。
H. c语言初学,关键地方的x值变化。尽量详细,答案是b
这道题重要是要了解先++,和后++的区别,以及运算符的优先级问题。
++x,显示x加一在参加运算,x++,是x参加完运算后在自身加一。当然变量x不论以先++,还是 后++赋值给某个参数的时候是一样的效果。++ 运算符比>运算符级别高。了解这点这个就不怎么难了。
I. C语言中赋值语句的位置
可以放在第一层else语句里面啊!前一句是输入赋值a,b,c,后面的是使用disc。只要保证使用前进行了初始化或赋值了就行了。
J. C语言中如何改变已经用printf()打印的数据的位置
如果输出流被重定向到打印机,难道还能要求打印机把已打印的东西吃回去,再打印别的东西……
我个人是觉得如果有这种需求不如用GUI,非要用控制台的话就需要找到用控制台的API——可移植性这种东西只好不管了
#include <conio.h>
clrscr();
// 重新输出